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 的支持