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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本