Skip to content

Commit 71d4e8a

Browse files
committed
refactor(@angular/cli): add ignorePeerDependencies option to package manager
This commit adds support for ignoring peer dependency warnings and errors during package installation. This is useful for commands like `ng update` where transient peer dependency conflicts may occur. - Added `ignorePeerDependenciesFlag` to the `PackageManagerDescriptor` interface. - Implemented the flag for `npm` (`--legacy-peer-deps`) and `pnpm` (`--strict-peer-dependencies=false`). - Updated `PackageManager.install` to accept and apply the `ignorePeerDependencies` option.
1 parent cb24c24 commit 71d4e8a

File tree

2 files changed

+7
-0
lines changed

2 files changed

+7
-0
lines changed

packages/angular/cli/src/package-managers/package-manager-descriptor.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,9 @@ export interface PackageManagerDescriptor {
6262
/** The flag to prevent lifecycle scripts from being executed. */
6363
readonly ignoreScriptsFlag: string;
6464

65+
/** The flag to ignore peer dependency warnings/errors. */
66+
readonly ignorePeerDependenciesFlag?: string;
67+
6568
/** A function that returns the arguments and environment variables to use a custom registry. */
6669
readonly getRegistryOptions?: (registry: string) => {
6770
args?: string[];
@@ -140,6 +143,7 @@ export const SUPPORTED_PACKAGE_MANAGERS = {
140143
saveDevFlag: '--save-dev',
141144
noLockfileFlag: '--no-package-lock',
142145
ignoreScriptsFlag: '--ignore-scripts',
146+
ignorePeerDependenciesFlag: '--legacy-peer-deps',
143147
getRegistryOptions: (registry: string) => ({ args: ['--registry', registry] }),
144148
versionCommand: ['--version'],
145149
listDependenciesCommand: ['list', '--depth=0', '--json=true', '--all=true'],
@@ -215,6 +219,7 @@ export const SUPPORTED_PACKAGE_MANAGERS = {
215219
saveDevFlag: '--save-dev',
216220
noLockfileFlag: '--no-lockfile',
217221
ignoreScriptsFlag: '--ignore-scripts',
222+
ignorePeerDependenciesFlag: '--strict-peer-dependencies=false',
218223
getRegistryOptions: (registry: string) => ({ args: ['--registry', registry] }),
219224
versionCommand: ['--version'],
220225
listDependenciesCommand: ['list', '--depth=0', '--json'],

packages/angular/cli/src/package-managers/package-manager.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -308,11 +308,13 @@ export class PackageManager {
308308
force?: boolean;
309309
registry?: string;
310310
ignoreScripts?: boolean;
311+
ignorePeerDependencies?: boolean;
311312
} = { ignoreScripts: true },
312313
): Promise<void> {
313314
const flags = [
314315
options.force ? this.descriptor.forceFlag : '',
315316
options.ignoreScripts ? this.descriptor.ignoreScriptsFlag : '',
317+
options.ignorePeerDependencies ? (this.descriptor.ignorePeerDependenciesFlag ?? '') : '',
316318
].filter((flag) => flag);
317319
const args = [...this.descriptor.installCommand, ...flags];
318320

0 commit comments

Comments
 (0)