跳到主要内容

工程化

包管理工具

https://juejin.cn/post/6932046455733485575

  • npm1/npm2
  • npm3/yarn
  • pnpm

npm1/2

采用了嵌套树的结构,大量的包会被重复安装。

npm3/yarn

将依赖拍平后(hoist)放在了根目录下。但是存在安全性的问题,由于依赖被拍平造成的扁平化结构,会导致能够使用到未声明的其他包。 例如:A 依赖 B、B 依赖 C,拍平后 A 也能使用到 C (幽灵包)。不确定性,例如 A 依赖于 C1.0、B 依赖于 C2.0,导致 A 中 C 和 B 中的 C 都有可能被提升到根节点上,而这取决于 A 和 B 在 package.json 中的顺序。

pnpm

  • 速度快
  • 通过 hard link 不同的项目也可以复用相同的包
  • 支持 monorepo
  • .pnpm store hardlink