到底 TMD 用哪个: npm, pnpm, Yarn, Bun, Deno? 傻瓜, 当然用 npm 啦

为什么?

因为也就你这种小白才会看到标题点进来

小白就有要小白的觉悟, 选市面上最主流的方式就对了

最主流的意思是

99% 的项目都在用 npm, 100% 的文档都会写 npm 的操作步骤

So 先把 npm 用好再考虑其他的就行

可是我听说 pnpm, Yarn 有 xxx 优点?

傻瓜, 那些优点和你没关系

你问一下自己:

  • 你电脑里有 100 个项目吗
  • 你每天都要构建 1000 次吗
  • 你的 CPU 负荷一直是 100% 吗
  • 你的硬盘空间马上就要爆了吗

我司, 500 强美企, 在本月前(2026-05)还在用 npm

其他工具的优点我们知道; 换工具后节省的百万级成本我们也想省; 那为什么我们坚持使用了 npm 10年+

就是因为使用 npm 利大于弊

可是我听说 npm 有 xxx 缺点?

是的, npm 确实有缺点

一个包管理器假如需要 100 个功能, npm 已经把其中 97 个做的很好, 另外 3 个也能用, 只是没那么完美

朋友, 不要抓住缺点不放. 你了解到的那些观点, 只是其他工具的拥泵/布道者的营销话术(中性词), 不要被营销了呀

再说了, npm 又不是一成不变, 它也在不断地吸取其他工具的优点, 克服自身的缺点

等你真遇到了 npm 解决不了的问题再考虑其他的吧

可是...

哪有那么多可是, 你知道会有其他包管理器存在吗?

它们只是解决了 npm 的某个痛点, 它们自身也有缺点

其他工具使用的前提都是需要 99.99% 兼容 npm. npm 的那些命令/参数/格式已经变成了前端规范

不管你用什么, npm 都是必须要会并且离不开的. npm 就是前端中的九阳真经, 你想想你到底掌握其中多少东西?

比如:

  • 你知道 install 时怎么显示安装进度吗?
  • 怎么并行安装, 缩短安装时间?
  • 怎么只安装 dependencies 的依赖?
  • 怎么让 build 出来的包百分百符合 package-lock?
  • 为什么 install 后 package-lock 会变? 变了后应不应该 commit?

有一种情况例外: 你要运行的项目中没有 package-lock

看清楚项目中是什么 lock 文件, 一定要老老实实用对应的包管理器

这篇文章你如果只能记住一句话, 我希望是上面这一句

lock 文件 对应的工具
package-lock.json npm
pnpm-lock.yaml pnpm
yarn.lock yarn

千万不要信这种鬼话:

这些都是包管理器而已, 用哪个都一样, 你想用那个用那个

你如果信了, 那你就真是傻瓜了

别问我是怎么知道的, 因为我以前就是那个傻瓜

标题中的 Bun 和 Deno 怎么没讲?

要不说你是小白, Bun Deno Node.js 这三个是竞品, 和 npm, pnpm, Yarn 根本就不是一个维度的东西

当提到了 Bun 和 Deno 时, 那就已经跳出 Node.js 的范围了, 好比我在这篇文章中给你鬼扯一通 Rust Python Java 哪个好

朋友, 听哥的, 不要再纠结这件事, 看完这篇文章后, 关闭你打开的所有类似页面/AI对话

用节省下来的精力去用在真正重要的技术上不好嘛

or

早点下班, 享受下生活