npm install原理分析

npm原理分析,主要看Npm版本之间的提升;
npm 3.0 扁平化 :安装模块时,不管其是直接依赖还是子依赖的依赖,优先将其安装在 node_modules 根目录。
npm 5.0 新增了 package-lock.json 文件,锁定依赖结构

看这张图就能大体了解npm install的原理
在这里插入图片描述
1.检查 .npmrc 文件:优先级为:项目级的 .npmrc 文件 > 用户级的 .npmrc 文件> 全局级的 .npmrc 文件 > npm 内置的 .npmrc 文件

2.检查项目中有无 lock 文件。

  • 无 lock 文件:
    a. 从 npm 远程仓库获取包信息根据 package.json 构建依赖树,构建过程:

    构建依赖树时,不管其是直接依赖还是子依赖的依赖,优先将其放置在 node_modules 根目录。
    当遇到相同模块时,判断已放置在依赖树的模块版本是否符合新模块的版本范围,如果符合则跳过,不符合则在当前模块的 node_modules 下放置该模块。
    注意这一步只是确定逻辑上的依赖树,并非真正的安装,后面会根据这个依赖结构去下载或拿到缓存中的依赖包

    b. 在缓存中依次查找依赖树中的每个包

    • 不存在缓存:

      1. 从 npm 远程仓库下载包

      2. 校验包的完整性

      • 校验不通过:

        重新下载

      • 校验通过:

        将下载的包复制到 npm 缓存目录

        将下载的包按照依赖结构解压到 node_modules

    • 存在缓存:将缓存按照依赖结构解压到 node_modules

      1. 将包解压到 node_modules

    c. 生成 lock 文件

  • 有 lock 文件:
    检查 package.json 中的依赖版本是否和 package-lock.json 中的依赖有冲突。
    如果没有冲突,直接跳过获取包信息、构建依赖树过程,开始在缓存中查找包信息,后续过程相同

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值