[npm]覆盖依赖中内嵌的依赖的版本

文章讲述了在开发过程中如何通过npm的overrides功能,强制在项目中使用特定版本的undici-types包,以升级依赖并避免官网未提供最新版本的问题。
摘要由CSDN通过智能技术生成

背景:

       开发过程中,我的项目中需要使用@type/node这个依赖,如下图:

@type/node中又依赖了一个undici-types的包,如下图:

现在想要升级undici-types的版本,由于@type/node官网暂时并没有使用最新版本的undici-type依赖,所以只能通过其他方式在本地强制使用新版本undici-types。

具体做法如下:

在自己项目的package.json中,使用npm的overrides来覆盖@type/node中设置的undici-type的版本,也就是通过overrides告诉@type/node不下载它里面设置的undici-type的版本,而是下载overrides设置的版本。图片如下:

然后执行npm install。安装后,可以在node module中看到下载的undici-type不在是@type/node中的版本,而是我们通过overrides设置的版本。图片如下:

所以当想要覆盖默认版本的依赖,下载某个特定版本时,就用overrides就行。写法就是通过json的层次关系表示要覆盖哪个包中的那个依赖,最后写上版本号就行,文章中截图对应如下:

"overrides": {
    "@types/node": {
      "undici-types": "~6.6.1"
    }
  }

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
npm,嵌套依赖版本的控制可以通过以下几种方式实现: 1. 使用"^"或"~"符号:在package.json文件,我们可以使用^或~符号来指定依赖版本范围。例如,"^2.1.0"表示允许安装2.1.0及更高版本依赖,但不会安装3.0.0及更高的主要版本更新。这样可以确保依赖不会过于陈旧,同时又保持向后兼容。 2. 锁定版本号:npm提供了一个package-lock.json文件,用于锁定安装时的依赖版本。当我们运行npm install时,npm会根据package-lock.json版本信息来安装依赖,而不是根据package.json依赖范围。这样可以确保每次安装的依赖版本一致。 3. 使用npm-shrinkwrap.json文件:npm-shrinkwrap.json文件的作用类似于package-lock.json,但它对于整个依赖树都起作用,而不仅仅是当前目录下的依赖。使用npm shrinkwrap命令可以生成npm-shrinkwrap.json文件,这样可以更精确地控制嵌套依赖版本。 4. 更新依赖版本:当我们的项目需要更新某个依赖版本时,可以手动修改package.json文件版本信息,然后运行npm install命令来安装更新的依赖版本。但需要注意的是,如果依赖存在嵌套依赖,可能会导致其他依赖版本冲突,因此需要仔细测试和调试。 综上所述,通过使用^或~符号、锁定版本号、使用npm-shrinkwrap.json文件和手动更新依赖版本等方法,我们可以灵活地控制npm嵌套依赖版本。这样可以确保项目的稳定性和兼容性,同时又能够充分利用依赖库的最新功能和修复。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值