在不匹配的 peerDependencies 上强制 npm 安装失败

Forcing npm install failures on mismatched peerDependencies

有没有人有办法在 peerDependency 版本不匹配的情况下使 npm install 完全 失败 ?我们经常遇到开发人员忽视 peerDependency warnings 的问题,并且当存在不充分的测试时,semver 不匹配会导致损坏。如果我们的 CICD 进程在尝试安装未解决的版本冲突时由于错误退出代码而崩溃,那就太好了。

你不能(据我所知)在 npm install 期间执行此操作,但你 可以 之后调用 npm ls - 如果有是 “无关的、缺失的和无效的包”,包括缺失的对等依赖项,它将以非零值退出。使用标志 --depth 0 将输出限制为您直接依赖的内容,例如:

$ npm ls --depth 0
cyf-eslint@1.0.0 path/to/dir
├── @codeyourfuture/eslint-config-standard@2.0.1
└── UNMET PEER DEPENDENCY eslint@7.5.0

npm ERR! peer dep missing: eslint@^6.0.0, required by @codeyourfuture/eslint-config-standard@2.0.1

$ echo $?
1