package-lock.json

其实用一句话来概括很简单,就是锁定安装时的包的版本号,并且需要上传到git,以保证其他人在npm install时大家的依赖能保证一致。
它会保存所有当前项目的依赖包包名,版本,仓库地址 哈希校验码
如果没有这个文件,package.json里只会记录名称,还需要去搜索

npm5以上引进的新的东西,一般低版本没有也看不到。

为什么引入?
好处就是让npm安装些包的时候速度更快,
其实是向别人借鉴的,由于其他公司人员列如:谷歌 Facebook觉得npm不好用安装太慢

于是开发出替代npm的 yarn
由于里面有一个yarn.lock使得安装快了,
然后npm借鉴

第一次安装第三方包的时候才会产生这个文件(npm5+)
测试:

npm install mime --save

5以上版本可以直接省略–save
官网解释:
https://docs.npmjs.com/files/package-lock.json

来自知乎的:https://zhuanlan.zhihu.com/p/59744715
博客园大佬的http://www.cnblogs.com/cangqinglang/p/8336754.html
引用知乎@周载南的回答

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

它有什么用呢?因为npm是一个用于管理package之间依赖关系的管理器,它允许开发者在pacakge.json中间标出自己项目对npm各库包的依赖。你可以选择以如下方式来标明自己所需要库包的版本

这里举个例子:

“dependencies”: { “@types/node”: “^8.0.33”, },

这里面的 向上标号^是定义了向后(新)兼容依赖,指如果
types/node的版本是超过8.0.33,并在大版本号(8)上相同,就允许下载最新版本的
types/node库包,例如实际上可能运行npm install时候下载的具体版本是8.0.35。波浪号

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

因此npm最新的版本就开始提供自动生成package-lock.json功能,为的是让开发者知道只要你保存了源文件,到一个新的机器上、或者新的下载源,只要按照这个package-lock.json所标示的具体版本下载依赖库包,就能确保所有库包与你上次安装的完全一样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值