2021-11-16 16:23:03 +08:00
|
|
|
/*---------------------------------------------------------------------------------------------
|
|
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
|
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
|
|
*--------------------------------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
//@ts-check
|
|
|
|
|
|
|
|
const glob = require('glob');
|
|
|
|
const path = require('path');
|
|
|
|
const fs = require('fs');
|
|
|
|
const cp = require('child_process');
|
|
|
|
const npm = process.platform === 'win32' ? 'npm.cmd' : 'npm';
|
2021-11-16 17:18:57 +08:00
|
|
|
const { REPO_ROOT } = require('../utils');
|
2021-11-16 16:23:03 +08:00
|
|
|
|
|
|
|
const files = glob.sync('**/package.json', {
|
|
|
|
cwd: REPO_ROOT,
|
|
|
|
ignore: ['**/node_modules/**', '**/out/**', '**/release/**']
|
|
|
|
});
|
|
|
|
|
|
|
|
for (const file of files) {
|
|
|
|
const filePath = path.join(REPO_ROOT, file);
|
|
|
|
const contents = JSON.parse(fs.readFileSync(filePath).toString());
|
|
|
|
if (!contents.dependencies && !contents.devDependencies && !contents.optionalDependencies) {
|
|
|
|
// nothing to install
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
|
|
|
npmInstall(path.dirname(file));
|
|
|
|
}
|
|
|
|
|
|
|
|
function npmInstall(location) {
|
|
|
|
/** @type {'inherit'} */
|
|
|
|
const stdio = 'inherit';
|
|
|
|
const opts = {
|
|
|
|
env: process.env,
|
|
|
|
cwd: location,
|
|
|
|
stdio
|
|
|
|
};
|
|
|
|
const args = ['install'];
|
|
|
|
|
|
|
|
console.log(`Installing dependencies in ${location}...`);
|
|
|
|
console.log(`$ npm ${args.join(' ')}`);
|
|
|
|
const result = cp.spawnSync(npm, args, opts);
|
|
|
|
|
|
|
|
if (result.error || result.status !== 0) {
|
|
|
|
process.exit(1);
|
|
|
|
}
|
|
|
|
}
|