@@ -26,6 +26,8 @@ interface PackageManagerOptions {
26
26
saveDev : string ;
27
27
install : string ;
28
28
prefix : string ;
29
+ noBinLinks : string ;
30
+ noLockfile : string ;
29
31
}
30
32
31
33
export function installPackage (
@@ -34,14 +36,15 @@ export function installPackage(
34
36
packageManager : PackageManager = PackageManager . Npm ,
35
37
save : Exclude < NgAddSaveDepedency , false > = true ,
36
38
extraArgs : string [ ] = [ ] ,
37
- global = false ,
39
+ cwd = process . cwd ( ) ,
38
40
) {
39
41
const packageManagerArgs = getPackageManagerArguments ( packageManager ) ;
40
42
41
43
const installArgs : string [ ] = [
42
44
packageManagerArgs . install ,
43
45
packageName ,
44
46
packageManagerArgs . silent ,
47
+ packageManagerArgs . noBinLinks ,
45
48
] ;
46
49
47
50
logger . info ( colors . green ( `Installing packages for tooling via ${ packageManager } .` ) ) ;
@@ -50,14 +53,6 @@ export function installPackage(
50
53
installArgs . push ( packageManagerArgs . saveDev ) ;
51
54
}
52
55
53
- if ( global ) {
54
- if ( packageManager === PackageManager . Yarn ) {
55
- installArgs . unshift ( 'global' ) ;
56
- } else {
57
- installArgs . push ( '--global' ) ;
58
- }
59
- }
60
-
61
56
const { status } = spawnSync (
62
57
packageManager ,
63
58
[
@@ -67,6 +62,7 @@ export function installPackage(
67
62
{
68
63
stdio : 'inherit' ,
69
64
shell : true ,
65
+ cwd,
70
66
} ,
71
67
) ;
72
68
@@ -93,21 +89,15 @@ export function installTempPackage(
93
89
94
90
// setup prefix/global modules path
95
91
const packageManagerArgs = getPackageManagerArguments ( packageManager ) ;
92
+ const tempNodeModules = join ( tempPath , 'node_modules' ) ;
96
93
const installArgs : string [ ] = [
97
94
packageManagerArgs . prefix ,
98
- tempPath ,
95
+ // Yarn will no append 'node_modules' to the path
96
+ packageManager === PackageManager . Yarn ? tempNodeModules : tempPath ,
97
+ packageManagerArgs . noLockfile ,
99
98
] ;
100
99
101
- installPackage ( packageName , logger , packageManager , true , installArgs , true ) ;
102
-
103
- let tempNodeModules : string ;
104
- if ( packageManager !== PackageManager . Yarn && process . platform !== 'win32' ) {
105
- // Global installs on Unix systems go to {prefix}/lib/node_modules.
106
- // Global installs on Windows go to {prefix}/node_modules (that is, no lib folder.)
107
- tempNodeModules = join ( tempPath , 'lib' , 'node_modules' ) ;
108
- } else {
109
- tempNodeModules = join ( tempPath , 'node_modules' ) ;
110
- }
100
+ installPackage ( packageName , logger , packageManager , true , installArgs , tempPath ) ;
111
101
112
102
return tempNodeModules ;
113
103
}
@@ -172,12 +162,16 @@ function getPackageManagerArguments(packageManager: PackageManager): PackageMana
172
162
silent : '--silent' ,
173
163
saveDev : '--dev' ,
174
164
install : 'add' ,
175
- prefix : '--global-folder' ,
165
+ prefix : '--modules-folder' ,
166
+ noBinLinks : '--no-bin-links' ,
167
+ noLockfile : '--no-lockfile' ,
176
168
}
177
169
: {
178
170
silent : '--quiet' ,
179
171
saveDev : '--save-dev' ,
180
172
install : 'install' ,
181
173
prefix : '--prefix' ,
174
+ noBinLinks : '--no-bin-links' ,
175
+ noLockfile : '--no-package-lock' ,
182
176
} ;
183
177
}
0 commit comments