Skip to content

npm install 原理

首先安装的依赖都会存放在根目录的 node_modules,默认采用扁平化的方式安装,并且排序规则.bin 第一个然后@系列,再然后按照首字母排序 abcd 等,并且使用的算法是广度优先遍历,在遍历依赖树时,npm 会首先处理项目根目录下的依赖,然后逐层处理每个依赖包的依赖,直到所有依赖都被处理完毕。在处理每个依赖时,npm 会检查该依赖的版本号是否符合依赖树中其他依赖的版本要求,如果不符合,则会尝试安装适合的版本

目录

扁平化

扁平化只是理想状态如下

扁平化

安装某个二级模块时,若发现第一层级有相同名称,相同版本的模块,便直接复用那个模块

因为 A 模块下的 C 模块被安装到了第一级,这使得 B 模块能够复用处在同一级下;且名称,版本,均相同的 C 模块

非理想状态下

扁平化

因为 B 和 A 所要求的依赖模块不同,(B 下要求是 v2.0 的 C,A 下要求是 v1.0 的 C )所以 B 不能像 2 中那样复用 A 下的 C v1.0 模块 所以如果这种情况还是会出现模块冗余的情况,他就会给 B 继续搞一层 node_modules,就是非扁平化了。

npm install 后续流程

后续流程

package-lock.json 的作用

Keep Reading, Keep Writing, Keep Coding