package-lock.json和package.json区别
Posted 放飞的回忆
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了package-lock.json和package.json区别相关的知识,希望对你有一定的参考价值。
package.json
里面定义的是版本范围(比如^1.0.0
),具体跑npm install
的时候安的什么版本,要解析后才能决定,这里面定义的依赖关系树,可以称之为逻辑树(logical tree)。
node_modules
文件夹下才是npm实际安装的确定版本的东西,这里面的文件夹结构我们可以称之为物理树(physical tree)。
安装过程中有一些去重算法,所以你会发现逻辑树结构和物理树结构不完全一样。
package-lock.json
可以理解成对结合了逻辑树和物理树的一个快照(snapshot),里面有明确的各依赖版本号,实际安装的结构,也有逻辑树的结构。
其最大的好处就是能获得可重复的构建(repeatable build),当你在CI(持续集成)上重复build的时候,得到的artifact是一样的,因为依赖的版本都被锁住了。在npm5以后,其内容和npm-shrinkwrap.json
一模一样。
这些在npm官网文档都有详细解释。
以上是关于package-lock.json和package.json区别的主要内容,如果未能解决你的问题,请参考以下文章
相当于 `pip` 的 `package.json' 和 `package-lock.json`
NPM5,package-lock.json 和 package.json 有啥区别?
package-lock.json 和 package.json 有啥区别,啥时候生成 package.json?
检查 NPM package.json 和 package-lock.json 是不是兼容