zoukankan      html  css  js  c++  java
  • npm install 安装过程分析

    摘录自:https://mp.weixin.qq.com/s/5tmND0G_ZkYVR7Dmug0ugQ

    首先检查 .npmrc 文件

    优先级为:项目级的 .npmrc 文件 > 用户级的 .npmrc 文件> 全局级的 .npmrc 文件 > npm 内置的 .npmrc 文件

    检查项目中有无 lock 文件。

    若无 lock 文件

    a. 则从 npm 远程仓库获取包信息。

    b. 根据 package.json 构建依赖树,构建过程:

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

    c. 接着 在缓存中依次查找依赖树中的每个包。

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

    若不存在缓存:

    • 从 npm 远程仓库下载包
    • 校验包的完整性
    • 校验不通过则重新下载
    • 校验通过:将下载的包复制到 npm 缓存目录,将下载的包按照依赖结构解压到 node_modules

    d. 将包解压到 node_modules
    e. 生成 lock 文件

    若有 lock 文件:

    • 检查 package.json 中的依赖版本是否和 package-lock.json 中的依赖有冲突。
    • 如果没有冲突,直接跳过获取包信息、构建依赖树过程,开始在缓存中查找包信息,后续过程相同
  • 相关阅读:
    [hadoop](2) MapReducer:Distributed Cache
    [hadoop](1) MapReduce:ChainMapper
    hadoop平台搭建
    postgresql主从同步配置
    问题记录-java图片验证码显示乱码
    windows mongodb启动
    新的开始
    springboot和Redis整合
    springboot的简单热部署
    springmvc模式下的上传和下载
  • 原文地址:https://www.cnblogs.com/everlose/p/12505245.html
Copyright © 2011-2022 走看看