npm install 下载依赖的过程
- 首先检查.npmrc文件,项目级.npmrc文件>用户级的.npmrc文件>全局性的.npmrc文件>npm内置的.npmrc文件
- 是否有lock文件
- 没有lock文件
- 从npm远程仓库获取包的信息
- 根据package.json构建依赖树
- 构建依赖树时,不论是直接依赖还是子依赖的依赖,优先放置在node_modules目录
- 当遇到相同模块时,判断已放置依赖树的模块是否符合新模块的版本范围,若是不符合,放置在当前模块的node_modules的目录中
- 注意这一步,只是建立逻辑上的依赖树,并没有开始下载依赖,后面会根据这个依赖结构去下载或拿到缓存中的依赖包
- 在缓存中查找每个依赖的包
- 缓存中不存在
- 从npm远程仓库下载依赖
- 检验是否通过
- 校验不通过
- 重新下载
- 校验通过
- 将下载的包复制到npm缓存目录
- 将下载的包根据依赖结构解压到node_modules目录中
- 校验不通过
- 缓存中存在
- 将缓存中的包根据依赖结构解压到node_modules目录中
- 缓存中不存在
- 将包解压到node_modules目录中
- 生成lock文件
- 有lock文件
- 检查package.json中的依赖版本是否和package-lock.json中的依赖版本冲突
- 如果不存在冲突,则直接跳过获取包信息,去缓存中查找依赖包,步骤一致
- 没有lock文件
本文来自博客园,作者:一尘子!,转载请注明原文链接:https://www.cnblogs.com/mengqc1995/p/16493259.html