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

如何为指定依赖关闭npm包自动去重功能?

解决方案

优先使用npm(v8及以上版本)实现

直接在项目根目录的package.json中添加overrides配置,强制指定bbb依赖的ccc版本固定为1.0.0即可,配置示例:

{
  "name": "你的项目名",
  "dependencies": {
    "aaa": "^4.0",
    "ddd": "^0.8",
    "eee": "^4.3"
  },
  "overrides": {
    "aaa": {
      "bbb": {
        "ccc": "1.0.0"
      }
    }
  }
}

配置完成后删除原来的node_modules和package-lock.json,重新执行npm install即可。此时npm会:

  • 在bbb的node_modules目录下单独安装ccc@1.0.0,供bbb专用,不会被全局去重
  • 根目录node_modules下保留ccc@1.0.1供ddd使用
  • eee依然按照默认规则去重,全局仅保留一个兼容版本

如果你的npm版本低于v8,无法使用overrides字段,更推荐直接升级npm版本,无需使用兼容性工具额外处理。

备选工具方案

Yarn(v2及以上版本)

在项目根目录的.yarnrc.yml中添加配置,限制aaa的所有依赖不被提升,即可实现仅关闭aaa及其子依赖的去重逻辑:

nmHoistingLimits: ["aaa"]

配置完成后重新执行yarn install即可,eee的去重逻辑不受影响。

pnpm

在项目根目录的.npmrc中添加配置,排除aaa及其子依赖的全局提升:

hoist-pattern[]=!aaa>**

重新执行pnpm install即可,除aaa下的依赖外,其余包的去重逻辑保持不变。

注意事项

如果使用了Webpack等打包工具,需要确认打包配置不会强制合并所有相同名称的依赖,避免嵌套安装的ccc@1.0.0被打包工具错误替换。

内容的提问来源于stack exchange,提问作者Bart van Heukelom

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:18:00