这个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的作用就是用来保证我们的应用程序依赖之间的关系是一致的, 兼容的.