Contents

npm install过程

模块安装过程

  1. 查找此模块是否已经在node_modules中安装过,然后再.npm 缓存中查看是否有同版本缓存
  2. 如果有缓存,直接使用缓存
  3. 没有缓存去registry中按照registry/packagename/version模式搜索模块
  4. 将模块下载并解压到node_modules目录中,如果模块是可执行模块,将可执行文件放到 .bin 目录中
  5. 同时在模块放在 .npm 中作为副本缓存

依赖关系梳理

  1. 由于顶层模块下面可能依赖其他模块,模块之间存在嵌套依赖,packge.lock.json记录了模块的逻辑依赖树
  2. 如果完全安装逻辑依赖关系安装,会存在大量重复的包,npm会对安装做dudupe抹平处理,将重复的包安装在顶层
  3. 当模块安装时,先安装顶层模块,然后安装顶层模块的依赖模块,npm会检查顶层是否存在此模块,如果不存在将此模块安装在顶层
  4. 如果顶层已存在相同模块,检查版本是否符合要求-
    • 符合要求,不再安装模块,直接跳过
    • 不符合要求,在当前模块目录node_modeules下安装模块
  5. 重复此过程,直到顶层模块的嵌套依赖安装完毕