diff --git a/npm/ng-packs/scripts/build.js b/npm/ng-packs/scripts/build.js index dca954af42..beef97ca29 100644 --- a/npm/ng-packs/scripts/build.js +++ b/npm/ng-packs/scripts/build.js @@ -4,37 +4,15 @@ import fse from 'fs-extra'; import program from 'commander'; (async () => { - const { projects } = await fse.readJSON('../angular.json'); - const projectNames = Object.keys(projects).filter(project => project !== 'dev-app'); - - const packageJson = await fse.readJSON('../package.json'); - program.option('-c, --noCommit', 'skip commit process', false); + program.option('-i, --noInstall', 'skip updating package.json and installation', false); program.parse(process.argv); - let npmPackageNames = []; - projectNames.forEach(project => { - // do not convert to async - const { name, dependencies = {}, peerDependencies = {} } = fse.readJSONSync( - `../packages/${project}/package.json`, - ); - npmPackageNames.push(name); - - packageJson.devDependencies = { - ...packageJson.devDependencies, - ...dependencies, - ...peerDependencies, - }; - }); - - await fse.writeJSON('../package.json', packageJson, { spaces: 2 }); - try { - await execa('yarn', ['install', '--ignore-scripts'], { - stdout: 'inherit', - cwd: '../', - }); + if (!program.noInstall) { + await execa('yarn', ['install-new-dependencies'], { stdout: 'inherit' }); + } execa.sync( 'yarn', diff --git a/npm/ng-packs/scripts/install-new-dependencies.js b/npm/ng-packs/scripts/install-new-dependencies.js new file mode 100644 index 0000000000..0579fb9d13 --- /dev/null +++ b/npm/ng-packs/scripts/install-new-dependencies.js @@ -0,0 +1,37 @@ +// ESM syntax is supported. +import execa from 'execa'; +import fse from 'fs-extra'; + +(async () => { + const { projects } = await fse.readJSON('../angular.json'); + const projectNames = Object.keys(projects).filter(project => project !== 'dev-app'); + + const packageJson = await fse.readJSON('../package.json'); + + projectNames.forEach(project => { + // do not convert to async + const { dependencies = {}, peerDependencies = {} } = fse.readJSONSync( + `../packages/${project}/package.json`, + ); + + packageJson.devDependencies = { + ...packageJson.devDependencies, + ...dependencies, + ...peerDependencies, + }; + }); + + await fse.writeJSON('../package.json', packageJson, { spaces: 2 }); + + try { + await execa('yarn', ['install', '--ignore-scripts'], { + stdout: 'inherit', + cwd: '../', + }); + } catch (error) { + console.error(error.stderr); + process.exit(1); + } + + process.exit(0); +})(); diff --git a/npm/ng-packs/scripts/package.json b/npm/ng-packs/scripts/package.json index 26dcb1d4a6..e7225409ff 100644 --- a/npm/ng-packs/scripts/package.json +++ b/npm/ng-packs/scripts/package.json @@ -6,6 +6,7 @@ "modules": "[build.js, sync.js]", "scripts": { "build": "node -r esm build.js", + "install-new-dependencies": "node -r esm install-new-dependencies.js", "sync": "node -r esm sync.js", "test": "echo \"Error: no test specified\" && exit 1" },