Skip to content

Commit 4d23a0f

Browse files
filipesilvavikerman
authored andcommitted
fix(@angular-devkit/schematics): hide install output by default
Current output: ``` kamik@RED-X1C6 MINGW64 /d/sandbox/latest-app (master) $ ng update @angular/cli --next --force Using package manager: 'yarn' Collecting installed dependencies... Found 30 dependencies. Fetching dependency metadata from registry... Package "@angular-devkit/build-angular" has a missing peer dependency of "@angular/localize" @ "^9.0.0-next.11". Updating package.json with dependency @angular/cli @ "9.0.0-next.15" (was "9.0.0-next.14")... Updating package.json with dependency @angular-devkit/build-angular @ "0.900.0-next.15" (was "0.900.0-next.14")... Updating package.json with dependency typescript @ "3.6.4" (was "3.5.3")... UPDATE package.json (1353 bytes) warning @angular-devkit/[email protected]: The engine "pnpm" appears to be invalid. warning @angular-devkit/[email protected]: The engine "pnpm" appears to be invalid. warning @ngtools/[email protected]: The engine "pnpm" appears to be invalid. warning @angular-devkit/[email protected]: The engine "pnpm" appears to be invalid. warning @angular-devkit/[email protected]: The engine "pnpm" appears to be invalid. warning @angular-devkit/[email protected]: The engine "pnpm" appears to be invalid. warning @angular/[email protected]: The engine "pnpm" appears to be invalid. warning @schematics/[email protected]: The engine "pnpm" appears to be invalid. warning @angular-devkit/[email protected]: The engine "pnpm" appears to be invalid. warning @schematics/[email protected]: The engine "pnpm" appears to be invalid. Compiling @angular/animations : es2015 as esm2015 Compiling @angular/compiler/testing : es2015 as esm2015 Compiling @angular/core : es2015 as esm2015 Compiling @angular/common : es2015 as esm2015 Compiling @angular/animations/browser : es2015 as esm2015 Compiling @angular/animations/browser/testing : es2015 as esm2015 Compiling @angular/core/testing : es2015 as esm2015 Compiling @angular/platform-browser : es2015 as esm2015 Compiling @angular/common/testing : es2015 as esm2015 Compiling @angular/platform-browser/testing : es2015 as esm2015 Compiling @angular/platform-browser/animations : es2015 as esm2015 Compiling @angular/common/http : es2015 as esm2015 Compiling @angular/router : es2015 as esm2015 Compiling @angular/forms : es2015 as esm2015 Compiling @angular/platform-browser-dynamic : es2015 as esm2015 Compiling @angular/common/http/testing : es2015 as esm2015 Compiling @angular/router/testing : es2015 as esm2015 Compiling @angular/platform-browser-dynamic/testing : es2015 as esm2015 ``` New success output: ``` kamik@RED-X1C6 MINGW64 /d/sandbox/latest-app (master) $ ng update @angular/cli --next --force Using package manager: 'yarn' Collecting installed dependencies... Found 30 dependencies. Fetching dependency metadata from registry... Package "@angular-devkit/build-angular" has a missing peer dependency of "@angular/localize" @ "^9.0.0-next.11". Updating package.json with dependency @angular/cli @ "9.0.0-next.15" (was "9.0.0-next.14")... Updating package.json with dependency @angular-devkit/build-angular @ "0.900.0-next.15" (was "0.900.0-next.14")... Updating package.json with dependency typescript @ "3.6.4" (was "3.5.3")... UPDATE package.json (1353 bytes) Installing packages... Packages installed successfully. ``` New error output: ``` kamik@RED-X1C6 MINGW64 /d/sandbox/latest-app (master) $ ng update @angular/cli --next --force Using package manager: 'yarn' Collecting installed dependencies... Found 30 dependencies. Fetching dependency metadata from registry... Package "@angular-devkit/build-angular" has a missing peer dependency of "@angular/localize" @ "^9.0.0-next.11". Updating package.json with dependency @angular/cli @ "9.0.0-next.15" (was "9.0.0-next.14")... Updating package.json with dependency @angular-devkit/build-angular @ "0.900.0-next.15" (was "0.900.0-next.14")... Updating package.json with dependency typescript @ "3.6.4" (was "3.5.3")... UPDATE package.json (1353 bytes) Installing packages... warning @angular-devkit/[email protected]: The engine "pnpm" appears to be invalid. warning @angular-devkit/[email protected]: The engine "pnpm" appears to be invalid. warning @angular-devkit/[email protected]: The engine "pnpm" appears to be invalid. warning @ngtools/[email protected]: The engine "pnpm" appears to be invalid. warning @angular-devkit/[email protected]: The engine "pnpm" appears to be invalid. warning @angular-devkit/[email protected]: The engine "pnpm" appears to be invalid. warning @angular/[email protected]: The engine "pnpm" appears to be invalid. warning @schematics/[email protected]: The engine "pnpm" appears to be invalid. warning @angular-devkit/[email protected]: The engine "pnpm" appears to be invalid. warning @schematics/[email protected]: The engine "pnpm" appears to be invalid. Compiling @angular/animations : es2015 as esm2015 Compiling @angular/compiler/testing : es2015 as esm2015 Compiling @angular/core : es2015 as esm2015 Compiling @angular/common : es2015 as esm2015 Compiling @angular/animations/browser : es2015 as esm2015 Compiling @angular/animations/browser/testing : es2015 as esm2015 Compiling @angular/core/testing : es2015 as esm2015 Compiling @angular/platform-browser : es2015 as esm2015 Compiling @angular/common/testing : es2015 as esm2015 Compiling @angular/platform-browser/testing : es2015 as esm2015 Compiling @angular/platform-browser/animations : es2015 as esm2015 Compiling @angular/common/http : es2015 as esm2015 Compiling @angular/forms : es2015 as esm2015 Compiling @angular/router : es2015 as esm2015 Compiling @angular/platform-browser-dynamic : es2015 as esm2015 Compiling @angular/common/http/testing : es2015 as esm2015 Compiling @angular/platform-browser-dynamic/testing : es2015 as esm2015 Compiling @angular/router/testing : es2015 as esm2015 Package install failed, see above. ```
1 parent 5df7767 commit 4d23a0f

File tree

4 files changed

+24
-4
lines changed

4 files changed

+24
-4
lines changed

etc/api/angular_devkit/schematics/tasks/index.d.ts

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
export declare class NodePackageInstallTask implements TaskConfigurationGenerator<NodePackageTaskOptions> {
2+
hideOutput: boolean;
23
packageManager?: string;
34
packageName?: string;
45
quiet: boolean;

packages/angular_devkit/schematics/tasks/node-package/executor.ts

+16-4
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,9 @@ export default function(
7777
taskPackageManagerName = options.packageManager;
7878
}
7979

80-
const outputStream = process.stdout;
81-
const errorStream = process.stderr;
80+
const bufferedOutput: {stream: NodeJS.WriteStream, data: Buffer}[] = [];
8281
const spawnOptions: SpawnOptions = {
83-
stdio: [ process.stdin, outputStream, errorStream ],
82+
stdio: !!options.hideOutput ? 'pipe' : 'inherit',
8483
shell: true,
8584
cwd: path.join(rootDirectory, options.workingDirectory || ''),
8685
};
@@ -100,16 +99,29 @@ export default function(
10099
}
101100

102101
return new Observable(obs => {
103-
spawn(taskPackageManagerName, args, spawnOptions)
102+
// tslint:disable-next-line: no-console
103+
console.log('Installing packages...');
104+
const childProcess = spawn(taskPackageManagerName, args, spawnOptions)
104105
.on('close', (code: number) => {
105106
if (code === 0) {
107+
// tslint:disable-next-line: no-console
108+
console.log('Packages installed successfully.');
106109
obs.next();
107110
obs.complete();
108111
} else {
112+
if (options.hideOutput) {
113+
bufferedOutput.forEach(({ stream, data }) => stream.write(data));
114+
}
109115
const message = 'Package install failed, see above.';
110116
obs.error(new Error(message));
111117
}
112118
});
119+
if (options.hideOutput) {
120+
childProcess.stdout.on('data', (data: Buffer) =>
121+
bufferedOutput.push({ stream: process.stdout, data: data }));
122+
childProcess.stderr.on('data', (data: Buffer) =>
123+
bufferedOutput.push({ stream: process.stderr, data: data }));
124+
}
113125
});
114126

115127
};

packages/angular_devkit/schematics/tasks/node-package/install-task.ts

+6
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,12 @@ export class NodePackageInstallTaskOptions {
1313
packageName: string;
1414
workingDirectory: string;
1515
quiet: boolean;
16+
hideOutput: boolean;
1617
}
1718

1819
export class NodePackageInstallTask implements TaskConfigurationGenerator<NodePackageTaskOptions> {
1920
quiet = true;
21+
hideOutput = true;
2022
workingDirectory?: string;
2123
packageManager?: string;
2224
packageName?: string;
@@ -30,6 +32,9 @@ export class NodePackageInstallTask implements TaskConfigurationGenerator<NodePa
3032
if (options.quiet != undefined) {
3133
this.quiet = options.quiet;
3234
}
35+
if (options.hideOutput != undefined) {
36+
this.hideOutput = options.hideOutput;
37+
}
3338
if (options.workingDirectory != undefined) {
3439
this.workingDirectory = options.workingDirectory;
3540
}
@@ -48,6 +53,7 @@ export class NodePackageInstallTask implements TaskConfigurationGenerator<NodePa
4853
options: {
4954
command: 'install',
5055
quiet: this.quiet,
56+
hideOutput: this.hideOutput,
5157
workingDirectory: this.workingDirectory,
5258
packageManager: this.packageManager,
5359
packageName: this.packageName,

packages/angular_devkit/schematics/tasks/node-package/options.ts

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ export interface NodePackageTaskFactoryOptions {
1616
export interface NodePackageTaskOptions {
1717
command: string;
1818
quiet?: boolean;
19+
hideOutput?: boolean;
1920
workingDirectory?: string;
2021
packageName?: string;
2122
packageManager?: string;

0 commit comments

Comments
 (0)