8
8
9
9
import { logging } from '@angular-devkit/core' ;
10
10
import { spawnSync } from 'child_process' ;
11
- import {
12
- existsSync ,
13
- mkdtempSync ,
14
- readFileSync ,
15
- realpathSync ,
16
- } from 'fs' ;
11
+ import { existsSync , mkdtempSync , readFileSync , realpathSync } from 'fs' ;
17
12
import { tmpdir } from 'os' ;
18
13
import { join , resolve } from 'path' ;
19
14
import * as rimraf from 'rimraf' ;
@@ -53,21 +48,18 @@ export function installPackage(
53
48
installArgs . push ( packageManagerArgs . saveDev ) ;
54
49
}
55
50
56
- const { status } = spawnSync (
57
- packageManager ,
58
- [
59
- ...installArgs ,
60
- ...extraArgs ,
61
- ] ,
62
- {
63
- stdio : 'inherit' ,
64
- shell : true ,
65
- cwd,
66
- } ,
67
- ) ;
51
+ const { status, stderr } = spawnSync ( packageManager , [ ...installArgs , ...extraArgs ] , {
52
+ stdio : 'pipe' ,
53
+ encoding : 'utf8' ,
54
+ cwd,
55
+ } ) ;
68
56
69
57
if ( status !== 0 ) {
70
- throw new Error ( 'Package install failed, see above.' ) ;
58
+ let errors = stderr . trim ( ) ;
59
+ if ( errors . length ) {
60
+ errors += '\n' ;
61
+ }
62
+ throw new Error ( errors + `Package install failed${ errors . length ? ', see above' : '' } .` ) ;
71
63
}
72
64
73
65
logger . info ( colors . green ( `Installed packages for tooling via ${ packageManager } .` ) ) ;
@@ -84,7 +76,7 @@ export function installTempPackage(
84
76
process . on ( 'exit' , ( ) => {
85
77
try {
86
78
rimraf . sync ( tempPath ) ;
87
- } catch { }
79
+ } catch { }
88
80
} ) ;
89
81
90
82
// setup prefix/global modules path
@@ -134,10 +126,7 @@ export function runTempPackageBin(
134
126
throw new Error ( `Cannot locate bin for temporary package: ${ packageNameNoVersion } .` ) ;
135
127
}
136
128
137
- const argv = [
138
- binPath ,
139
- ...args ,
140
- ] ;
129
+ const argv = [ binPath , ...args ] ;
141
130
142
131
const { status, error } = spawnSync ( 'node' , argv , {
143
132
stdio : 'inherit' ,
@@ -159,19 +148,19 @@ export function runTempPackageBin(
159
148
function getPackageManagerArguments ( packageManager : PackageManager ) : PackageManagerOptions {
160
149
return packageManager === PackageManager . Yarn
161
150
? {
162
- silent : '--silent' ,
163
- saveDev : '--dev' ,
164
- install : 'add' ,
165
- prefix : '--modules-folder' ,
166
- noBinLinks : '--no-bin-links' ,
167
- noLockfile : '--no-lockfile' ,
168
- }
151
+ silent : '--silent' ,
152
+ saveDev : '--dev' ,
153
+ install : 'add' ,
154
+ prefix : '--modules-folder' ,
155
+ noBinLinks : '--no-bin-links' ,
156
+ noLockfile : '--no-lockfile' ,
157
+ }
169
158
: {
170
- silent : '--quiet' ,
171
- saveDev : '--save-dev' ,
172
- install : 'install' ,
173
- prefix : '--prefix' ,
174
- noBinLinks : '--no-bin-links' ,
175
- noLockfile : '--no-package-lock' ,
176
- } ;
159
+ silent : '--quiet' ,
160
+ saveDev : '--save-dev' ,
161
+ install : 'install' ,
162
+ prefix : '--prefix' ,
163
+ noBinLinks : '--no-bin-links' ,
164
+ noLockfile : '--no-package-lock' ,
165
+ } ;
177
166
}
0 commit comments