npm install过程
Contents
模块安装过程
- 查找此模块是否已经在node_modules中安装过,然后再.npm 缓存中查看是否有同版本缓存
- 如果有缓存,直接使用缓存
- 没有缓存去registry中按照registry/packagename/version模式搜索模块
- 将模块下载并解压到node_modules目录中,如果模块是可执行模块,将可执行文件放到 .bin 目录中
- 同时在模块放在 .npm 中作为副本缓存
依赖关系梳理
- 由于顶层模块下面可能依赖其他模块,模块之间存在嵌套依赖,packge.lock.json记录了模块的逻辑依赖树
- 如果完全安装逻辑依赖关系安装,会存在大量重复的包,npm会对安装做dudupe抹平处理,将重复的包安装在顶层
- 当模块安装时,先安装顶层模块,然后安装顶层模块的依赖模块,npm会检查顶层是否存在此模块,如果不存在将此模块安装在顶层
- 如果顶层已存在相同模块,检查版本是否符合要求-
- 符合要求,不再安装模块,直接跳过
- 不符合要求,在当前模块目录node_modeules下安装模块
- 重复此过程,直到顶层模块的嵌套依赖安装完毕