功能对比
| 功能 | pnpm | Yarn | npm | 备注 |
|---|---|---|---|---|
| 工作区支持 | ✅ | ✅ | ✅ | |
隔离的 node_modules | ✅ | ✅ | ✅ | pnpm 默认。 |
提升的 node_modules | ✅ | ✅ | ✅ | npm 默认。 |
| 即插即用(Plug'n'Play) | ✅ | ✅ | ❌ | Yarn 默认。 |
| 自动安装对等依赖 | ✅ | ❌ | ✅ | |
| 零安装(Zero-Installs) | ❌ | ✅ | ❌ | |
| 补丁依赖项 | ✅ | ✅ | ❌ | |
| Node.js 版本管理 | ✅ | ❌ | ❌ | |
| 自身版本管 理 | ✅ | ✅ | ❌ | |
| 有锁文件 | ✅ | ✅ | ✅ | pnpm-lock.yaml、yarn.lock、package-lock.json。 |
| 覆盖支持 | ✅ | ✅ | ✅ | 在 Yarn 中称为 "resolutions"。 |
| 内容可寻址存储 | ✅ | ✅ | ❌ | 当 nodeLinker 设置为 pnpm 时,Yarn 使用 CAS。 |
| 动态包执行 | ✅ | ✅ | ✅ | pnpm dlx、yarn dlx、npx。 |
| 副作用缓存 | ✅ | ❌ | ❌ | |
| 目录 | ✅ | ❌ | ❌ | |
| 配置依赖项 | ✅ | ❌ | ❌ | |
| JSR 注册表支持 | ✅ | ✅ | ❌ | |
| 执行脚本前自动安装 | ✅ | ❌ | ❌ | 在 Yarn 中,即插即用确保依赖项始终是最新的。 |
| 钩子 | ✅ | ✅ | ❌ | |
| 列出许可证 | ✅ | ✅ | ❌ | pnpm 通过 pnpm licenses list 支持。Yarn 通过插件支持。 |
注意: 为了保持对比简洁,我们只包含了可能经常使用的功能。