123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- /*---------------------------------------------------------------------------------------------
- * 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';
- const { REPO_ROOT } = require('../utils');
- 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);
- }
- }
|