当“Lockfile is up to date”时如何检查 pnpm strict-peer-dependency (ERR_PNPM_PEER_DEP_ISSUES)?

问题描述 投票:0回答:2

当我通过编辑 package.json 在空项目中添加不带peerDependency 的依赖项时,如下所示:

{
  "name": "pnpmtest",
  "devDependencies": {
    "eslint-plugin-jsx-a11y": "^6.6.0"
  }
}

然后运行

pnpm install

命令会输出错误

ERR_PNPM_PEER_DEP_ISSUES

devDependencies:
+ eslint-plugin-jsx-a11y 6.6.1

 ERR_PNPM_PEER_DEP_ISSUES  Unmet peer dependencies

.
└─┬ eslint-plugin-jsx-a11y 6.6.1
  └── ✕ missing peer eslint@"^3 || ^4 || ^5 || ^6 || ^7 || ^8"
Peer dependencies that should be installed:
  eslint@"^3 || ^4 || ^5 || ^6 || ^7 || ^8"

以上命令输出

1
退出代码。

echo $?
1

这个错误完全没问题,因为我的项目缺少 eslint。这是所需的输出。

我的问题始于 CI 环境,我也希望在

pnpm install
之后看到此错误并中断 CI 管道。目前,当我删除
node_modules
并再次运行上面的安装时(这是模拟 CI 中发生的情况),我没有看到错误和命令输出代码 0

→ rm -rf node_modules

→ pnpm install
Lockfile is up to date, resolution step is skipped
Packages: +56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Packages are hard linked from the content-addressable store to the virtual store.
  Content-addressable store is at: /Users/mjanaszek/Library/pnpm/store/v3
  Virtual store is at:             node_modules/.pnpm
Progress: resolved 56, reused 56, downloaded 0, added 56, done

devDependencies:
+ eslint-plugin-jsx-a11y 6.6.1

→ echo $?
0

如何检查 CI 环境(当“Lockfile 是最新的”时)我的依赖项是否包含一些 ERR_PNPM_PEER_DEP_ISSUES

npm continuous-integration pnpm
2个回答
0
投票

这个命令可以解决问题:

pnpm install --resolution-only

--resolution-only
的帮助说:

重新运行解决方案:对于打印出对等依赖问题很有用

不是一个非常不言自明的名称,但可以满足您的需要(也是我需要的!)


-1
投票

您可以通过运行

pnpm ls --json
来检查包的状态。

如果您不希望 pnpm 在对等依赖问题上失败,请将“strict-peer-dependencies”设置设置为“false”。

pnpm up --config.strict-peer-dependencies=false

希望对您有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.