diff --git a/CHANGELOG.md b/CHANGELOG.md index 2d88b73194..3b014a88ed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ NativeScript CLI Changelog ================ + +3.1.2 (2017, July 06) +== + +### Fixed +* [Fixed #2950](https://github.com/NativeScript/nativescript-cli/issues/2950): Unable to provide user input on postinstall of plugin + 3.1.1 (2017, June 28) == diff --git a/lib/node-package-manager.ts b/lib/node-package-manager.ts index c64f2c8236..8289e66baa 100644 --- a/lib/node-package-manager.ts +++ b/lib/node-package-manager.ts @@ -1,5 +1,6 @@ import * as path from "path"; import { exported } from "./common/decorators"; +import { isInteractive } from "./common/helpers"; export class NodePackageManager implements INodePackageManager { private static SCOPED_DEPENDENCY_REGEXP = /^(@.+?)(?:@(.+?))?$/; @@ -194,16 +195,20 @@ export class NodePackageManager implements INodePackageManager { private async getNpmInstallResult(params: string[], cwd: string): Promise { return new Promise((resolve, reject) => { const npmExecutable = this.getNpmExecutableName(); - let childProcess = this.$childProcess.spawn(npmExecutable, params, { cwd, stdio: "pipe" }); + const stdioValue = isInteractive() ? "inherit" : "pipe"; + + const childProcess = this.$childProcess.spawn(npmExecutable, params, { cwd, stdio: stdioValue }); let isFulfilled = false; let capturedOut = ""; let capturedErr = ""; - childProcess.stdout.on("data", (data: string) => { - this.$logger.write(data.toString()); - capturedOut += data; - }); + if (childProcess.stdout) { + childProcess.stdout.on("data", (data: string) => { + this.$logger.write(data.toString()); + capturedOut += data; + }); + } if (childProcess.stderr) { childProcess.stderr.on("data", (data: string) => {