对npm包精准控制之npm-shrinkwrap.json与package-lock.json

本文详细介绍了npm-shrinkwrap.json和package-lock.json的作用和区别,旨在解决在npm包版本控制中遇到的问题。npm-shrinkwrap.json用于确保团队成员和不同环境中安装的包版本一致,防止因包更新导致的功能异常。package-lock.json是npm5引入的新特性,自动记录包依赖信息,与npm-shrinkwrap.json功能相似但更新机制略有不同。在发布库时,建议不包含package-lock.json,以便用户可以控制传递依赖性更新。
摘要由CSDN通过智能技术生成

npm-shrinkwrap.json

该文件是通过运行npm shrinkwrap命令产生的,在npm5之前(不包括5),主要是用来精准控制安装指定版本的npm包。具体啥意思?

在开发一个项目的时候,特别是多人协作,或者在不同设备中对同一个项目进行开发,可能会遇到这样的问题,A同事通过npm install安装了一些在某个版本下的npm包,过了一段日子,某个npm包内容功能更新了(更不幸的话还可能是会破坏了原本一些功能的更新),B同事加入项目来了,他也需要在自己的设备上安装项目资源,结果是,在A同事这边功能正常的,但到B同事这边却异常了。这只是一种例子,还有更多类似的,相信很多开发者可能也会遇到过。

那么导致这种情况发生的根本原因是在于,同事间安装的npm包版本不一致,可能功能也就不一致。

可能会有人疑问,那我在package.json中精确写死某个版本的npm包不就得了吗? 不!你漏了一个很重要的信息,这也是package.json做不到的,就是你要安装的这个npm包可能还需要依赖一些其他包,这些其他包的版本你也要控制好才能100%确定一致

还有一个更加典型的例子,就是我们在本地开发好的项目,一切正常,但是当需要在CI上进行打包发布后,发现有bug了!oh shit—— 内心不禁感叹了一下。 原因也是跟上面一样。

那么如何避免这种情况的发生呢,就是要确保安装的npm包版本一致,这时候,就是npm-shrinkwr

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值