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

这个package-lock.json文件的作用之前从未去注意过,甚至我将这个文件添加到来.gitignore下,其实这个文件是在npm5里面加入的,下面主要来看一下这个package-lock.json文件的作用。

package.json

package.json里面定义的是版本范围,具体跑npm install的时候安的什么版本,要解析后才能决定,这里面定义的依赖关系树,可以称之为逻辑树(logical tree)
node_modules文件夹下才是npm实际安装的确定版本的东西,这里面的文件夹结构我们可以称之为物理树(physical tree)

package-lock.json

package-lock.json可以理解成对结合了逻辑树物理树的一个快照(snapshot),里面有明确的各依赖版本号,实际安装的结构,也有逻辑树的结构.
最大的好处是能获得可重复的构建(repeatable build)。
根据官方文档,package-lock.json是在npm install时生成的一份文件,用来记录当前状态下实际安装的各个npm package的具体来源和版本号。

package-lock.json的作用


其实用一句话来概括很简单,就是锁定安装时的包的版本号,并且需要上传到git,以保证其他人在npm install时大家的依赖能保证一致。
package-lock.json的作用就是用来保证我们的应用程序依赖之间的关系是一致的, 兼容的.

推荐阅读更多精彩内容