[博客学习] node_modules 地狱到盆地

494 阅读1分钟

npm 进化史,从地狱到盆地

npm 2 - 树状结构(依赖地狱)

  • 递归安装,深不见底

  • 重复安装,造成大量的冗余

npm 3 - 扁平结构(共享与冲突)

  • 安装时遍历整个依赖树,计算出最合理的文件夹安装方式

  • 尽量平铺共享,有冲突则递归

  • npm ls --depth 1 查看项目的直接依赖项

npm 5 - 锁定结构(依赖一致)

  • package-lock.json 的作用是锁定依赖安装结构,如果查看这个 json 的结构,会发现与 node_modules 目录的文件层级结构是一一对应的

  • 只要有这样一个 lock 文件,不管在那一台机器上执行 npm install 都会得到完全相同的 node_modules 结果

npm 7 - 开放与兼容

  • 自动安装 peerDependencies

  • package-lock v2 和对 yarn.lock 的支持