@@ -24,33 +24,28 @@ interface PackageManagerOptions {
24
24
silent : string ;
25
25
install : string ;
26
26
prefix : string ;
27
+ noBinLinks : string ;
28
+ noLockfile : string ;
27
29
}
28
30
29
31
export function installPackage (
30
32
packageName : string ,
31
33
logger : logging . Logger ,
32
34
packageManager : PackageManager = PackageManager . Npm ,
33
35
extraArgs : string [ ] = [ ] ,
34
- global = false ,
36
+ cwd = process . cwd ( ) ,
35
37
) {
36
38
const packageManagerArgs = getPackageManagerArguments ( packageManager ) ;
37
39
38
40
const installArgs : string [ ] = [
39
41
packageManagerArgs . install ,
40
42
packageName ,
41
43
packageManagerArgs . silent ,
44
+ packageManagerArgs . noBinLinks ,
42
45
] ;
43
46
44
47
logger . info ( colors . green ( `Installing packages for tooling via ${ packageManager } .` ) ) ;
45
48
46
- if ( global ) {
47
- if ( packageManager === PackageManager . Yarn ) {
48
- installArgs . unshift ( 'global' ) ;
49
- } else {
50
- installArgs . push ( '--global' ) ;
51
- }
52
- }
53
-
54
49
const { status } = spawnSync (
55
50
packageManager ,
56
51
[
@@ -60,6 +55,7 @@ export function installPackage(
60
55
{
61
56
stdio : 'inherit' ,
62
57
shell : true ,
58
+ cwd,
63
59
} ,
64
60
) ;
65
61
@@ -82,13 +78,6 @@ export function installTempPackage(
82
78
83
79
// setup prefix/global modules path
84
80
const packageManagerArgs = getPackageManagerArguments ( packageManager ) ;
85
- const installArgs : string [ ] = [
86
- packageManagerArgs . prefix ,
87
- tempPath ,
88
- ] ;
89
-
90
- installPackage ( packageName , logger , packageManager , installArgs , true ) ;
91
-
92
81
let tempNodeModules : string ;
93
82
if ( packageManager !== PackageManager . Yarn && process . platform !== 'win32' ) {
94
83
// Global installs on Unix systems go to {prefix}/lib/node_modules.
@@ -98,6 +87,15 @@ export function installTempPackage(
98
87
tempNodeModules = join ( tempPath , 'node_modules' ) ;
99
88
}
100
89
90
+ const installArgs : string [ ] = [
91
+ packageManagerArgs . prefix ,
92
+ // Yarn will no append 'node_modules' to the path
93
+ packageManager === PackageManager . Yarn ? tempNodeModules : tempPath ,
94
+ packageManagerArgs . noLockfile ,
95
+ ] ;
96
+
97
+ installPackage ( packageName , logger , packageManager , installArgs , tempPath ) ;
98
+
101
99
// Needed to resolve schematics from this location since we use a custom
102
100
// resolve strategy in '@angular/devkit-core/node'
103
101
// todo: this should be removed when we change the resolutions to use require.resolve
@@ -165,11 +163,15 @@ function getPackageManagerArguments(packageManager: PackageManager): PackageMana
165
163
? {
166
164
silent : '--silent' ,
167
165
install : 'add' ,
168
- prefix : '--global-folder' ,
166
+ prefix : '--modules-folder' ,
167
+ noBinLinks : '--no-bin-links' ,
168
+ noLockfile : '--no-lockfile' ,
169
169
}
170
170
: {
171
171
silent : '--quiet' ,
172
172
install : 'install' ,
173
173
prefix : '--prefix' ,
174
+ noBinLinks : '--no-bin-links' ,
175
+ noLockfile : '--no-package-lock' ,
174
176
} ;
175
177
}
0 commit comments