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 @   丁如超dd  阅读(341)  评论(0编辑  收藏  举报
努力加载评论中...
编辑推荐:
· 如何在 .NET 中 使用 ANTLR4
· 后端思维之高并发处理方案
· 理解Rust引用及其生命周期标识(下)
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
阅读排行:
· 想让你多爱自己一些的开源计时器
· Cursor预测程序员行业倒计时:CTO应做好50%裁员计划
· 大模型 Token 究竟是啥:图解大模型Token
· 用99元买的服务器搭一套CI/CD系统
· 如何在 .NET 中 使用 ANTLR4
点击右上角即可分享
微信分享提示