npm install 原理
一、缓存机制(cache)
npm install在执行的时候,首先构建依赖树,依次安装依赖树中的每个包。
如果缓存中有依赖包,就会向远程仓库确认是否过期(304检查)检查,如果过期,就使用新的返回数据刷新缓存,否则就直接使用缓存中的数据。
而向缓存中查找依赖包时,会通过package-lock.json中查找包的标识符,从而在缓存中找到对应得包。
二、package-lock.json的作用
场景:当在一个多人开发协助的项目中,小明给小红对应的项目,小红npm install相关依赖,但是package.json中通常都是dependencies中axios: "^0.25.3"这样不确定的版本,所以很有可能小红install的是与小明不一样的包版本,所以这时候package-lock.json起作用了
package-lock.json可以将我们所有包的版本确定死,所以共享给小红的项目中要包括package-lock.json文件,这样可以保证下载的包是同一版本。
简单来说就是锁定安装模块的版本号。 就是在npm install的时候,记录各个模块的版本信息和下载路径,这样别人拉项目npm install时候, 就会依据packgae-lock.json去安装"react": "^17.0.2",保证大家依赖一致并且安装模块速度也能提高。
三、注意点
1、npm版本5+才支持package-lock.json和缓存机制(cache)。
2.如果npm版本是5+,会自动生成package-lock.json。有的话会默认依据该文件进行安装而不是package.json。cnpm不支持package-lock.json。
2.需要更新版本,得去更新package.json里的模块版本,然后npm install,才能同步更新到package-lock.json