npm install原理,package-lock.json的作用

444 阅读1分钟

npm install 原理

1.PNG

一、缓存机制(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