一、 package-lock.json 说明
package-lock.json是当 node_modules 或 package.json 发生变化时自动生成的文件。这个文件主要功能是确定当前安装的包的依赖,以便后续重新安装的时候生成相同的依赖,而忽略项目开发过程中有些依赖已经发生的更新。
使用npm install xxx命令安装模块时,不再需要–save选项,会自动将模块依赖信息保存到 package.json 文件;
安装模块操作(改变 node_modules 文件夹内容)会生成或更新 package-lock.json 文件
发布的模块不会包含 package-lock.json 文件
如果手动修改了 package.json 文件中已有模块的版本,直接执行npm install不会安装新指定的版本,只能通过npm install xxx@yy更新
重新安装模块之所以快,是因为 package-lock.json 文件中已经记录了整个 node_modules 文件夹的树状结构,甚至连模块的下载地址都记录了,再重新安装的时候只需要直接下载文件即可。
二、package.json和package-lock.json的区别
package.json:
主要用来定义项目中需要依赖的包
package-lock.json:
在 npm install时候生成一份文件,用以记录当前状态下实际安装的各个npm package的具体来源和版本号。
‘^’ :
放在版本号之前,表示向后兼容依赖,说白了就是在大版本号不变的情况下,下载最新版的包
项目中引入的包版本号之前经常会加^号,每次在执行npm install之后,下载的包都会发生变化,为了系统的稳定性考虑,每次执行完npm install之后会对应生成package-lock文件,该文件记录了上一次安装的具体的版本号,相当于是提供了一个参考,在出现版本兼容性问题的时候,就可以参考这个文件来修改版本号即可。