package.json和package-lock.json的区别

发现我的node项目下面只有一个package-lock.json文件,不存在package.json文件,顺便扒一扒这两个的区别,其实package-lock就是锁定安装时的包版本号,需要上传到git上,以保证其他人在install时候,大家的依赖版本相同。

官方文档:这个package-lock.json 是在 `npm install`时候生成一份文件,用以记录当前状态下实际安装的各个npm package的具体来源和版本号.

跟package.json的区别在于(举个栗子):

"dependencies": {
 "@types/node": "^8.0.33",
},

这里的^向上尖号是定义向后(新)兼容依赖,如果types/node版本是超过8.0.33,并且是在大版本(8)上相同,就允许下载最新的types/node包。同一个大版本不同版本号之间存在差异,导致依赖库包行为特征有时候不兼容。

所以npm最新的版本就开始自动生成package-lock.json功能,目的就是确保所有库包与你上次安装的完全一样。

package.json文件只能锁定大版本,即版本号的第一位,不能锁定后面的小版本,你每次npm install时候拉取的该大版本下面最新的版本,可能有些童鞋之前就踩过类似的坑。

一般为了稳定性考虑我们不能随意升级依赖包,因为如果换包导致兼容性bug出现很难排查,所以package-lock.json就是来解决包锁定不升级问题的。

如果要升级package-lock.json里面的库包,怎么操作呢?

npm install XXX@x.x.x  

 

【完】

posted @ 2018-09-07 11:45  tangjiao_Miya  阅读(26306)  评论(2编辑  收藏  举报