了解一下npm i的流程与原理

流程

执行npm install,先判断有无lock文件。

1、没有lock文件。会先根据依赖构建出扁平的依赖关系决定下哪些包。新版本的依赖关系是扁平化的,老版本是树结构,可能会出现依赖重复安装的问题,老版本示意图如下:

图来自https://zhuanlan.zhihu.com/p/128625669
作为前端工程师你真的知道 npm install 原理么? - 知乎

 

新版本示意如下:

img
作为前端工程师你真的知道 npm install 原理么? - 知乎

        构建出依赖关系会进入下包的操作。下包时会先去找缓存,缓存有符合条件的版本就直接用,没有就去registry仓库下载压缩包,然后将压缩包添加到缓存并解压到node_modules中,完成安装,最后会生成lock文件(指定一个确定的版本)。

        2、有lock文件,先检查依赖的一致性,即lock的当前版本是否符合依赖的版本要求,比如package.json的版本要求是~4.2.3,但是lock的版本是4.1.5,这样次版本就不符合要求,需要重新构建依赖关系后再下包,在下包时同样要先检查缓存。如果lock的版本符合要求就直接进行下包(也是先用缓存)的流程。

流程图如下:

版本号规则

        比如:^x.y.z  其中x代表主版本,不一定兼容上一版本;y代表次版本;z代表修订版本,做一些小的需求更改。其中^代表主版本不变,次版本和修订版本用最新的。

        ~x.y.z则是代表修订版本用最新的,主次版本不变。

最后

        在代码提交时,最好把lock文件也提交了。lock文件为我们提供一个确定的版本号,在下载包时,npm也会优先去找缓存。

上一篇:[LeetCode][LCR 179]查找总价格为目标值的两个商品


下一篇:科技下乡:数字乡村改变乡村生活方式