pnpm
pnpm 全称是 “Performant NPM”,即高性能的 npm。它结合软硬链接与新的依赖组织方式,大大提升了包管理的效率,也同时解决了 “幻影依赖” 的问题,让包管理更加规范,减少潜在风险发生的可能性。
当项目中使用了一个没有在 package.json 文件中定义的包时,则出现幻影依赖(Phantom dependencies),也称为隐式依赖或幽灵依赖。项目中缺少声明的依赖最好被视作一个 bug, 它可能导致一些不符合预期的不易排查和处理的错误:
- 不兼容的版本:项目的 package.json 声明包 A,包 A 依赖包 B,项目中使用到包 B,如果对包 A 进行升级,而且升级的包 A 导致要使用升级的包 B,项目中所有使用到包 B 的地方都可能出现问题,对开发者来说,只是升级包 A,包 B 却出现了版本不兼容问题。
- 缺少依赖:包 A 是 devDependencies 开发依赖,包 A 依赖包 B,项目中使用到包 B。对于生成环境,不会安装包 A 的,也就不会安装包 B,导致生产环境的依赖丢失。