前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >package-lock.json和package.json

package-lock.json和package.json

作者头像
用户3258338
发布2019-09-04 14:29:55
1.9K0
发布2019-09-04 14:29:55
举报
文章被收录于专栏:女程序员的日常_Lin

各位宝宝,你那里的秋天来了吗?


package-lock.json就是锁定安装时的包的版本号,以保证其他人在npm install时大家的依赖能保持一致。

package.json

npm是一个管理package之间依赖关系的管理器,它允许开发者在package.json中间标出自己项目对npm各库包的依赖。例如:

代码语言:javascript
复制
"dependencies": {
 "@types/node": "^8.0.33",
},

^表示向后(新)兼容依赖。上例中types/node的版本是超过8.0.33,并在大版本上相同,就允许下载最新版本的types/node库包,实际上可能运行npm i 时下载的具体版本可能是8.0.35。

package.json文件只记录你通过npm install方式安装的模块信息,而这些模块所依赖的其他子模块的信息不会记录。

大多数情况下这种向新兼容依赖下载最新库包的时候都没有问题,可是因为npm 是开源世界,各库包的版本语义可能并不相同,有的库包开发者并不遵循严格原则:相同大版本号的同一个库包,其接口符合兼容要求。用户在相同的nodejs的代码库,在不同时间或者不同npm下载源之下,下到的各依赖库包版本可能有所不同,因此其依赖库包行为特征也不同有时甚至完全不兼容。

package-lock.json

那么package-lock.json就出现了,只要开发者保存了源文件,到一个新的机器上、或者新的下载源,只要按照package-lock.json所表示的具体版本下载依赖库包,就能确保所有库包与你上次安装的完全一样。

package-lock.json文件锁定所有模块的版本号,包括主模块和所有依赖子模块。当你执行npm install时,node从package.sjon文件读取模块名,从package-lock.json文件中获取版本号,然后下载更新

原本package.json文件只要锁定大版本,并不能锁定后面的小版本,每次npm i 都是拉取大本版下的最新的版本,package-lock.json使得每次安装依赖的时候就锁定在你安装的那个版本。

更新

如果我们安装的包有bug,该怎么办,以前直接改掉package.json中的版本,然后npm i 就可以了,但是5版本后就不支持这么做了,因为版本锁定在了package.json里面了,只能通过 npm install xxx(更新小版本)或者npm install xxx@xxx(指定版本号)来更新依赖,然后package-lock.json随之更新。

愿我们有能力不向生活缴械投降---Lin

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 女程序员的日常 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档