npm intall 原理
2019-12-21 16:15:17 5 举报
npm 模块安装机制
作者其他创作
大纲/内容
true
如 packaeg.json 中某个包的版本是 ^1.1.0,npm 就会去仓库中获取符合 1.x.x 形式的最新版本
有交集( semver 兼容)
存在重复模块(模块名相同)
从仓库获取
确定工程中的首层依赖(dependencies 和 devDependencies 的属性)
安装模块
有依赖
执行工程自身preinstall
查找该模块依赖
无缓存
分别保留在各自的依赖树中
只保留一个一个兼容版本
确定首层依赖关系
获取模块
dedupe
上一步获取到的是一棵完整的依赖树(存在重复模块)
false
获取模块信息
有缓存
直接拿到该模块信息
上一步获取到模块的压缩包地址(resolved 字段)
直接拿
结束
无依赖
遍历所有节点,逐个将模块放在根节点下(node-modules 的第一层)
有package-lock.json
npm 用此地址检查本地缓存
确定版本
npm 会开启多进程从每个首层依赖模块开始逐步寻找更深层级的节点
获取模块实体地址
执行工程自身生命周期
模块扁平化(dedupe)
0 条评论
下一页