前端现在主流的包管理器就四个:npm、Yarn、pnpm、Bun。
npm
Node.js 自带的,不用额外装。优点是稳定、兼容性好,npm 仓库也是最大的。缺点就是慢、占空间。
npm install <package>
npm install <package> -D # 开发依赖
npm update <package>
npm run <script>
适合:个人项目、不想折腾的。
Yarn
Facebook 出的,比 npm 快。有离线模式(装过的包可以离线再用),还有 PnP 模式能减少 node_modules 体积。
npm install -g yarn
yarn add <package>
yarn add <package> -D
yarn upgrade <package>
yarn run <script>
适合:团队已经在用、需要离线模式的。
pnpm
现在很火,快还省空间。用硬链接共享依赖,同一个包不用下载多次。比 Yarn 还快,磁盘占用也少。而且没有幽灵依赖问题,更安全。
npm install -g pnpm
pnpm add <package>
pnpm add <package> -D
pnpm update <package>
pnpm run <script>
适合:大型项目、Monorepo、磁盘空间不够的。
Bun
新出的,用 Zig 写的,速度快到离谱。不只是包管理器,还是完整的 JS 运行时(类似 Node.js 的替代品)。内置打包、测试工具,TypeScript 原生支持。
curl -fsSL https://bun.sh/install | bash
bun add <package>
bun add <package> -d
bun update <package>
bun run <script>
适合:新项目、追求性能的、愿意尝鲜的。生产环境慎重。
怎么选
| 特性 | npm | Yarn | pnpm | Bun |
|---|---|---|---|---|
| 速度 | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| 空间占用 | 高 | 中 | 低 | 低 |
| 兼容性 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
| Monorepo | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
简单说:
- 新手/个人项目 → npm
- 中大型项目 → Yarn
- 追求性能、Monorepo → pnpm
- 新项目想尝鲜 → Bun
切换包管理器
都一样,删掉旧的装新的就行:
# 从 npm 换到 pnpm
rm -rf node_modules package-lock.json
npm install -g pnpm
pnpm install
# 从 npm 换到 Yarn
rm -rf node_modules package-lock.json
npm install -g yarn
yarn install
# 从 npm 换到 Bun
rm -rf node_modules package-lock.json
curl -fsSL https://bun.sh/install | bash
bun install
怎么看项目用了哪个
看锁文件:
package-lock.json→ npmyarn.lock→ Yarnpnpm-lock.yaml→ pnpmbun.lockb→ Bun