You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用pnpm覆盖特定工作区应用的peer依赖

解决pnpm+npm workspaces下单个子应用覆盖devDependency的问题

方案1:根目录pnpm.overrides结合filter指定单个应用

pnpm支持在根目录的pnpm.overrides中通过filter字段,仅对特定子应用生效版本覆盖,不会影响其他应用。

在根目录的package.json中添加如下配置:

{
  "pnpm": {
    "overrides": {
      "要覆盖的依赖名": {
        "filter": "./packages/你的子应用目录",
        "version": "你想要的目标版本"
      }
    }
  }
}

如果需要针对该依赖的特定旧版本进行覆盖,也可以这么写:

{
  "pnpm": {
    "overrides": {
      "要覆盖的依赖名@原版本号": {
        "filter": "./packages/你的子应用目录",
        "version": "目标版本号"
      }
    }
  }
}

配置完成后执行pnpm install,该覆盖规则只会作用于指定的子应用。

方案2:直接给子应用安装指定版本并锁定

如果该devDependency是子应用的直接依赖,可直接在子应用目录下执行:

pnpm add 依赖名@目标版本 --save-dev --filter ./packages/你的子应用目录

或者手动在子应用的package.json中指定该devDependency的版本,再执行pnpm install --filter ./packages/你的子应用目录。

这种方式适合直接依赖场景,如果是间接依赖的devDependency,还是需要用方案1的overrides+filter强制覆盖。

注意事项

  • 子应用package.json里的npm原生overrides字段不会被pnpm识别,所以之前尝试的方法无效是正常情况。
  • 若项目需要同时兼容npm和pnpm,可以在根目录同时配置全局overrides(供npm使用)和带filter的pnpm.overrides(供pnpm使用),npm侧则保留子应用单独的overrides配置即可。

内容的提问来源于stack exchange,提问作者Paalar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 14:20:58