From 71d4e8adf4148649727d139206df855b66a8f131 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 29 Dec 2025 16:35:21 -0500 Subject: [PATCH 1/2] 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. --- .../cli/src/package-managers/package-manager-descriptor.ts | 5 +++++ packages/angular/cli/src/package-managers/package-manager.ts | 2 ++ 2 files changed, 7 insertions(+) diff --git a/packages/angular/cli/src/package-managers/package-manager-descriptor.ts b/packages/angular/cli/src/package-managers/package-manager-descriptor.ts index f48ed1e32ed7..0a332653e01c 100644 --- a/packages/angular/cli/src/package-managers/package-manager-descriptor.ts +++ b/packages/angular/cli/src/package-managers/package-manager-descriptor.ts @@ -62,6 +62,9 @@ export interface PackageManagerDescriptor { /** The flag to prevent lifecycle scripts from being executed. */ readonly ignoreScriptsFlag: string; + /** The flag to ignore peer dependency warnings/errors. */ + readonly ignorePeerDependenciesFlag?: string; + /** A function that returns the arguments and environment variables to use a custom registry. */ readonly getRegistryOptions?: (registry: string) => { args?: string[]; @@ -140,6 +143,7 @@ export const SUPPORTED_PACKAGE_MANAGERS = { saveDevFlag: '--save-dev', noLockfileFlag: '--no-package-lock', ignoreScriptsFlag: '--ignore-scripts', + ignorePeerDependenciesFlag: '--legacy-peer-deps', getRegistryOptions: (registry: string) => ({ args: ['--registry', registry] }), versionCommand: ['--version'], listDependenciesCommand: ['list', '--depth=0', '--json=true', '--all=true'], @@ -215,6 +219,7 @@ export const SUPPORTED_PACKAGE_MANAGERS = { saveDevFlag: '--save-dev', noLockfileFlag: '--no-lockfile', ignoreScriptsFlag: '--ignore-scripts', + ignorePeerDependenciesFlag: '--strict-peer-dependencies=false', getRegistryOptions: (registry: string) => ({ args: ['--registry', registry] }), versionCommand: ['--version'], listDependenciesCommand: ['list', '--depth=0', '--json'], diff --git a/packages/angular/cli/src/package-managers/package-manager.ts b/packages/angular/cli/src/package-managers/package-manager.ts index b76831be109c..57b521615273 100644 --- a/packages/angular/cli/src/package-managers/package-manager.ts +++ b/packages/angular/cli/src/package-managers/package-manager.ts @@ -308,11 +308,13 @@ export class PackageManager { force?: boolean; registry?: string; ignoreScripts?: boolean; + ignorePeerDependencies?: boolean; } = { ignoreScripts: true }, ): Promise { const flags = [ options.force ? this.descriptor.forceFlag : '', options.ignoreScripts ? this.descriptor.ignoreScriptsFlag : '', + options.ignorePeerDependencies ? (this.descriptor.ignorePeerDependenciesFlag ?? '') : '', ].filter((flag) => flag); const args = [...this.descriptor.installCommand, ...flags]; From 944caf264b590fbc3b1ace94ac01d5012aeb9671 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 29 Dec 2025 16:40:18 -0500 Subject: [PATCH 2/2] refactor(@angular/cli): use ignorePeerDependencies in update command This commit updates the `ng update` command to utilize the `ignorePeerDependencies` option when installing packages. Previously, the command forced the installation (`--force`) when NPM 7+ was detected to workaround peer dependency issues. Now, it uses the more specific `ignorePeerDependencies` option (mapping to `--legacy-peer-deps` for NPM), which is safer and cleaner. --- packages/angular/cli/src/commands/update/cli.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/angular/cli/src/commands/update/cli.ts b/packages/angular/cli/src/commands/update/cli.ts index 3de979b481e6..9b926cc079a2 100644 --- a/packages/angular/cli/src/commands/update/cli.ts +++ b/packages/angular/cli/src/commands/update/cli.ts @@ -521,7 +521,11 @@ export default class UpdateCommandModule extends CommandModule