为什么?
因为也就你这种小白才会看到标题点进来
小白就有要小白的觉悟, 选市面上最主流的方式就对了
最主流的意思是
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
早点下班, 享受下生活