任何事情都不是凭空发生,特别在是技术这件事情上;任何事情都是由最最基础发展而来的,只要追本溯源就能解决问题。
问题的产生
起因:项目走自动化构建不成功,说一个包连接github失败,但是在package.json里面根本没找到这个包,在代码里面也没看到(神奇脸.jpg)
猜测:可能是哪个包关联了吧。
结论:确实在package-lock.json里面发现了这个包,是项目中另一个包引入的问题,看到项目并没有用,就删除了,自动化是成功解决了。问题来了,为什么会出现这种情况,package.json里面没有,但是package-lock.json里面有。
package.json和package-lock.json
package.json就是我们在使用npm init就会产生的json文件,记录当前状态下实际安装的各个npm package的具体来源和版本号。
package-lock.json是在npm i或者npm update就会产生的json文件(npm 5.x.x或者更大就会有这个文件)
为什么会出现package-lock.json?
都知道,我们以前用package.json直接管理包,很方便,但是为什么会在后面版本出现一个package-lock.json文件,毕竟存在即合理。比如package.json里面安装包“express”:“^ 4.15.4”,这个意思是只要保证大版本就会被安装,这样的设计会出现同样的package.json但是不同的开发者安装的包不一样的情况,可能开发者A在今天安装是4.15.4,过1一个月开发者B加入,拉代码安装,这时候express更新了,变成了4.16.1,那么这时候开发者B安装的就是4.16.1。理论上是兼容的,但是可能会产生不同的结果,正因为这个不确定性,package-lock.json出现了,看lock英文就知道意思了。
package-lock.json锁定每个包的版本,让不同的开发者安装的包是同一个版本,所以建议把package-lock.json提交到项目远程,不要禁用它

本文探讨了在npm管理包时,为何会出现package-lock.json文件。当package.json中的包版本使用符号,导致不同时间安装可能导致版本差异,package-lock.json便用于锁定具体版本,确保团队成员安装的一致性。同时,文章指出cnpm不会更新package-lock.json,推荐使用npm i进行操作,并解释了为何package.json中未记录的包仍存在于package-lock.json中的情况。
最低0.47元/天 解锁文章
538

被折叠的 条评论
为什么被折叠?



