功能对比
功能 | 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 通过插件支持。 |
注意: 为了保持对比简洁,我们只包含了可能经常使用的功能。