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包版本一致,这时候