1- import { spawn } from "child_process" ;
1+ import { exec } from "child_process" ;
22import * as path from "path" ;
33import { TemplateManager } from "../../cli/lib/TemplateManager" ;
44import { Config , FS_TOKEN , IFileSystem , ProjectTemplate } from "../types" ;
@@ -123,18 +123,18 @@ export class PackageManager {
123123 }
124124
125125 public static removePackage ( packageName : string , verbose : boolean = false ) : boolean {
126+ let command : string ;
126127 const managerCommand = this . getManager ( ) ;
127- let args : string [ ] ;
128128 switch ( managerCommand ) {
129129 case "npm" :
130130 /* passes through */
131131 default :
132- args = [ ' uninstall' , packageName , ' --quiet' , ' --save' ] ;
132+ command = ` ${ managerCommand } uninstall ${ packageName } --quiet --save` ;
133133 break ;
134134 }
135135 try {
136136 // tslint:disable-next-line:object-literal-sort-keys
137- Util . spawnSync ( managerCommand , args , { stdio : "pipe" , encoding : "utf8" } ) ;
137+ Util . execSync ( command , { stdio : "pipe" , encoding : "utf8" } ) ;
138138 } catch ( error ) {
139139 Util . log ( `Error uninstalling package ${ packageName } with ${ managerCommand } ` ) ;
140140 if ( verbose ) {
@@ -149,10 +149,10 @@ export class PackageManager {
149149
150150 public static addPackage ( packageName : string , verbose : boolean = false ) : boolean {
151151 const managerCommand = this . getManager ( ) ;
152- const args = this . getInstallArgs ( packageName ) ;
152+ const command = this . getInstallCommand ( managerCommand , packageName ) ;
153153 try {
154154 // tslint:disable-next-line:object-literal-sort-keys
155- Util . spawnSync ( managerCommand , args , { stdio : "pipe" , encoding : "utf8" } ) ;
155+ Util . execSync ( command , { stdio : "pipe" , encoding : "utf8" } ) ;
156156 } catch ( error ) {
157157 Util . log ( `Error installing package ${ packageName } with ${ managerCommand } ` ) ;
158158 if ( verbose ) {
@@ -165,7 +165,7 @@ export class PackageManager {
165165 }
166166
167167 public static async queuePackage ( packageName : string , verbose = false ) {
168- const args = this . getInstallArgs ( packageName ) . map ( arg => arg === ' --save' ? ' --no-save' : arg ) ;
168+ const command = this . getInstallCommand ( this . getManager ( ) , packageName ) . replace ( " --save" , " --no-save" ) ;
169169 const [ packName , version ] = packageName . split ( / @ (? = [ ^ \/ ] + $ ) / ) ;
170170 const packageJSON = this . getPackageJSON ( ) ;
171171 if ( ! packageJSON . dependencies ) {
@@ -190,24 +190,13 @@ export class PackageManager {
190190 // D.P. Concurrent install runs should be supported
191191 // https://github.com/npm/npm/issues/5948
192192 // https://github.com/npm/npm/issues/2500
193- const managerCommand = this . getManager ( ) ;
194193 const task = new Promise < { packageName , error , stdout , stderr } > ( ( resolve , reject ) => {
195- const child = spawn ( managerCommand , args ) ;
196- let stdout = '' ;
197- let stderr = '' ;
198- child . stdout ?. on ( 'data' , ( data ) => {
199- stdout += data . toString ( ) ;
200- } ) ;
201- child . stderr ?. on ( 'data' , ( data ) => {
202- stderr += data . toString ( ) ;
203- } ) ;
204- child . on ( 'close' , ( code ) => {
205- const error = code !== 0 ? new Error ( `Process exited with code ${ code } ` ) : null ;
206- resolve ( { packageName, error, stdout, stderr } ) ;
207- } ) ;
208- child . on ( 'error' , ( err ) => {
209- resolve ( { packageName, error : err , stdout, stderr } ) ;
210- } ) ;
194+ const child = exec (
195+ command , { } ,
196+ ( error , stdout , stderr ) => {
197+ resolve ( { packageName, error, stdout, stderr } ) ;
198+ }
199+ ) ;
211200 } ) ;
212201 task [ "packageName" ] = packName ;
213202 this . installQueue . push ( task ) ;
@@ -236,7 +225,7 @@ export class PackageManager {
236225 const fullPackageRegistry = config . igPackageRegistry ;
237226 try {
238227 // tslint:disable-next-line:object-literal-sort-keys
239- Util . spawnSync ( ' npm' , [ ' whoami' , ` --registry=${ fullPackageRegistry } `] , { stdio : ' pipe' , encoding : ' utf8' } ) ;
228+ Util . execSync ( ` npm whoami --registry=${ fullPackageRegistry } `, { stdio : " pipe" , encoding : " utf8" } ) ;
240229 } catch ( error ) {
241230 // try registering the user:
242231 Util . log (
@@ -265,7 +254,7 @@ export class PackageManager {
265254 if ( login ?. status === 0 ) {
266255 //make sure scope is configured:
267256 try {
268- Util . spawnSync ( ' npm' , [ ' config' , ' set' , ` @infragistics:registry` , fullPackageRegistry ] ) ;
257+ Util . execSync ( ` npm config set @infragistics:registry ${ fullPackageRegistry } ` ) ;
269258 return true ;
270259 } catch ( error ) {
271260 return false ;
@@ -292,10 +281,6 @@ export class PackageManager {
292281 }
293282 }
294283
295- private static getInstallArgs ( packageName : string ) : string [ ] {
296- return [ 'install' , packageName , '--quiet' , '--save' ] ;
297- }
298-
299284 private static getManager ( /*config:Config*/ ) : string {
300285 //stub to potentially swap out managers
301286 return "npm" ;
0 commit comments