特性比较
| 特性 | pnpm | Yarn | npm | 注意事项 |
|---|---|---|---|---|
| [工作区[支持] | :white_check_mark: | :white_check_mark: | :white_check_mark: | |
隔离 node_modules | :white_check_mark: | :white_check_mark: | :white_check_mark: | pnpm 中的默认设置。 |
[提升 node_modules] | :white_check_mark: | :white_check_mark: | :white_check_mark: | npm 中的默认设置。 |
| Plug'n'Play | :white_check_mark: | :white_check_mark: | ❌ | Yarn 中的默认设置。 |
| [自动安装 peers] | :white_check_mark: | ❌ | :white_check_mark: | |
| 零安装 | ❌ | :white_check_mark: | ❌ | |
| [修补依赖] | :white_check_mark: | :white_check_mark: | ❌ | |
| [管理 Node.js 版本] | :white_check_mark: | ❌ | ❌ | |
| [管理自身版本] | :white_check_mark: | :white_check_mark: | ❌ | |
| 有锁文件 | :white_check_mark: | :white_check_mark: | :white_check_mark: | pnpm-lock.yaml、yarn.lock、package-lock.json。 |
| [覆盖支持] | :white_check_mark: | :white_check_mark: | :white_check_mark: | 在 Yarn 中称为 "resolutions"。 |
| 内容寻址存储 | :white_check_mark: | :white_check_mark: | ❌ | 当 nodeLinker 设置为 pnpm 时,Yarn 会使用 CAS。 |
| [动态包执行] | :white_check_mark: | :white_check_mark: | :white_check_mark: | pnpm dlx、yarn dlx、npx。 |
| [副作用缓存] | :white_check_mark: | ❌ | ❌ | |
| [目录] | :white_check_mark: | ❌ | ❌ | |
| [配置依赖] | :white_check_mark: | ❌ | ❌ | |
| [JSR 注册表支持] | :white_check_mark: | :white_check_mark: | ❌ | |
| [脚本运行前自动安装] | :white_check_mark: | ❌ | ❌ | 在 Yarn 中,Plug'n'Play 确保依赖始终保持最新。 |
| [钩子] | :white_check_mark: | :white_check_mark: | ❌ | |
| [列出许可证] | :white_check_mark: | :white_check_mark: | ❌ | pnpm 通过 pnpm licenses list 支持它。Yarn 有一个插件可以支持它。 |
注意:为了保持比较简洁,我们仅包含可能经常使用的功能。
¥Note: To keep the comparison concise, we include only features likely to be used frequently.