功能比较
| 功能 | pnpm | Yarn | npm | 备注 |
|---|---|---|---|---|
| [工作区支持] | ✅ | ✅ | ✅ | |
单独的 node_modules | ✅ | ✅ | ✅ | pnpm 默认。 |
[提升的 node_modules] | ✅ | ✅ | ✅ | npm 默认。 |
| 即插即用 | ✅ | ✅ | ❌ | Yarn 默认设置。 |
| [自动安装节点] | ✅ | ❌ | ✅ | |
| 零安装 | ❌ | ✅ | ❌ | |
| [修补依赖] | ✅ | ✅ | ❌ | |
| [管理 Node.js 版本] | ✅ | ❌ | ❌ | |
| [管理自身版本] | ✅ | ✅ | ❌ | |
| 有锁文件 | ✅ | ✅ | ✅ | pnpm-lock.yaml、yarn.lock、package-lock.json。 |
| [覆盖支持] | ✅ | ✅ | ✅ | 在 Yarn 中被称为“resolutions”。 |
| 内容可寻址存储 | ✅ | ✅ | ❌ | 当 nodeLinker 设置为 pnpm 时,Yarn 会使用 CAS。 |
| [动态包执行] | ✅ | ✅ | ✅ | pnpm dlx, yarn dlx, npx. |
| [副作用缓存] | ✅ | ❌ | ❌ | |
| [目录] | ✅ | ❌ | ❌ | |
| [配置依赖] | ✅ | ❌ | ❌ | |
| [JSR 注册表支持] | ✅ | ✅ | ❌ | |
| [脚本运行前自动安装] | ✅ | ❌ | ❌ | 在 Yarn 中,Plug'n'Play 确保依赖始终是最新的。 |
| [钩子] | ✅ | ✅ | ❌ | |
| [列出许可证] | ✅ | ✅ | ❌ | pnpm 通过 pnpm licenses list 支持它。Yarn 有一个插件。 |
注意: 为了使比较简明,我们仅包含可能会经常使用的功能。