首页前端开发正文

package-lock.json这个文件有什么用?

朱绪2020-12-082079Vue.js

npm install这个命令被执行后,会生成一个package-lock.json的文件,用来记录当前状态下实际安装的各个npm包的具体来源及版本号。

它有嘛用呢?因为npm它是一个管理包之间依赖关系的管理器,允许开发者在package.json中间标出自己项目对npm各库包的依赖。

比方说你可以选择下面这样方式标明自己所需要的库包的版本:

"dependencies": {

"@types/node": "^8.0.33"

}

^这个上标号定义了向后(新)兼容依赖,指如果types/node版本超过了8.0.33,且大版本号(8)相同,就允许下载最新版本的types/node库包。例如运行npm install时下的版本是8.0.35。

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

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

一样