npm install做了什么?图文解释

136 阅读1分钟

npm install经历了什么?

image.png

如上图:

  1. install后先判断有无lock文件
    lock文件是做什么的?lock直译为锁定,定义了依赖包的确定版本,install时下载定好的版本。

  2. 根据有无lock

    • 有lock,进一步判断,目前的包的版本是否正确,也就是依赖的包的版本号与lock内规定的是否一致。
    • 无lock,直接创建包的依赖关系,根据依赖关系才能下载,比如x版本的包1依赖了x版本的包2和包3.
  3. 根据包依赖的版本是否符合lock的规定(lock一致性)

    • 依赖包版本符合lock:检查缓存内是否有需要的文件,有缓存就取出,没缓存就去仓库下载。
    • 依赖包版本不符合lock:不符合lock是不能用的,需要重新下载合适的文件,下载之前必须先判断依赖关系。
  4. 有包依赖关系了,去获取需要的文件

    • 想办法获取我们需要的x版本的文件就行,去哪里获取?去文件仓库下载,下载的文件当然是压缩包格式的。
  5. 压缩包也要先缓存,然后解压到node_modules,我们看到的node_modules里的文件是非压缩格式的。

tips: node_modules里的.bin

.bin是不显示文件夹,置灰的,里边放2种二进制文件,分别在Unix和Windows环境执行脚本。当我们用npm或者yarn安装一个包时,如果包内有.bin,会自动在我们的.bin文件夹内生成一个指向新.bin的执行文件。