Skip to content

Commit 8820093

Browse files
alan-agius4vikerman
authored andcommitted
fix(@angular/cli): don't install using global command but rather install in a different folder
Fixes: #16010
1 parent 3100182 commit 8820093

File tree

1 file changed

+15
-21
lines changed

1 file changed

+15
-21
lines changed

packages/angular/cli/tasks/install-package.ts

Lines changed: 15 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ interface PackageManagerOptions {
2626
saveDev: string;
2727
install: string;
2828
prefix: string;
29+
noBinLinks: string;
30+
noLockfile: string;
2931
}
3032

3133
export function installPackage(
@@ -34,14 +36,15 @@ export function installPackage(
3436
packageManager: PackageManager = PackageManager.Npm,
3537
save: Exclude<NgAddSaveDepedency, false> = true,
3638
extraArgs: string[] = [],
37-
global = false,
39+
cwd = process.cwd(),
3840
) {
3941
const packageManagerArgs = getPackageManagerArguments(packageManager);
4042

4143
const installArgs: string[] = [
4244
packageManagerArgs.install,
4345
packageName,
4446
packageManagerArgs.silent,
47+
packageManagerArgs.noBinLinks,
4548
];
4649

4750
logger.info(colors.green(`Installing packages for tooling via ${packageManager}.`));
@@ -50,14 +53,6 @@ export function installPackage(
5053
installArgs.push(packageManagerArgs.saveDev);
5154
}
5255

53-
if (global) {
54-
if (packageManager === PackageManager.Yarn) {
55-
installArgs.unshift('global');
56-
} else {
57-
installArgs.push('--global');
58-
}
59-
}
60-
6156
const { status } = spawnSync(
6257
packageManager,
6358
[
@@ -67,6 +62,7 @@ export function installPackage(
6762
{
6863
stdio: 'inherit',
6964
shell: true,
65+
cwd,
7066
},
7167
);
7268

@@ -93,21 +89,15 @@ export function installTempPackage(
9389

9490
// setup prefix/global modules path
9591
const packageManagerArgs = getPackageManagerArguments(packageManager);
92+
const tempNodeModules = join(tempPath, 'node_modules');
9693
const installArgs: string[] = [
9794
packageManagerArgs.prefix,
98-
tempPath,
95+
// Yarn will no append 'node_modules' to the path
96+
packageManager === PackageManager.Yarn ? tempNodeModules : tempPath,
97+
packageManagerArgs.noLockfile,
9998
];
10099

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);
111101

112102
return tempNodeModules;
113103
}
@@ -172,12 +162,16 @@ function getPackageManagerArguments(packageManager: PackageManager): PackageMana
172162
silent: '--silent',
173163
saveDev: '--dev',
174164
install: 'add',
175-
prefix: '--global-folder',
165+
prefix: '--modules-folder',
166+
noBinLinks: '--no-bin-links',
167+
noLockfile: '--no-lockfile',
176168
}
177169
: {
178170
silent: '--quiet',
179171
saveDev: '--save-dev',
180172
install: 'install',
181173
prefix: '--prefix',
174+
noBinLinks: '--no-bin-links',
175+
noLockfile: '--no-package-lock',
182176
};
183177
}

0 commit comments

Comments
 (0)