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

Angular中能否用package-lock.json锁定嵌套依赖C的版本至2.0.10?

当前环境信息

  • Angular CLI: 11.0.3
  • Angular: 11.0.9
  • Node: 14.20.1
  • Ivy Workspace: 是

问题解答

可以通过修改package-lock.json实现将嵌套依赖包C锁定为2.0.10版本,但这种方式属于临时方案,不推荐作为长期解决办法——后续执行npm install、npm update等命令时,npm可能会根据包B的依赖声明(^2.0.12)重新计算并覆盖你修改的版本。

更可靠的解决方案

根据你的npm版本,推荐以下两种可持续的方式:

  1. npm 8.3+版本(推荐)
    在项目根目录的package.json中添加overrides字段,强制指定包B依赖的包C版本:

    {
      "overrides": {
        "包B": {
          "包C": "2.0.10"
        }
      }
    }
    

    添加完成后执行npm install,npm会自动更新package-lock.json,将包B依赖的包C锁定为2.0.10版本。

  2. npm 8.3以下版本(如你当前Node 14对应的npm 6.x)
    需要借助npm-force-resolutions工具来实现版本锁定:

    • 首先安装工具作为开发依赖:
      npm install --save-dev npm-force-resolutions
      
    • 在package.json中添加resolutions字段和preinstall脚本:
      {
        "resolutions": {
          "包B/包C": "2.0.10"
        },
        "scripts": {
          "preinstall": "npx npm-force-resolutions"
        }
      }
      
    • 执行npm install,工具会自动修改package-lock.json,强制将包B依赖的包C版本设置为2.0.10。

临时修改package-lock.json的步骤(不推荐)

如果你只是临时需要锁定版本,可以按以下操作:

  • 打开package-lock.json,找到包B依赖树中包C的条目,将version字段修改为2.0.10,同时更新对应的resolved和integrity值(可从npm官网查询2.0.10版本的哈希值)。
  • 修改完成后执行npm ci(不要用npm install,避免npm重新计算依赖),确保项目安装的是指定版本的包C。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 13:27:31