从 npm 与 Bun 的选择看 AI 时代的“最佳实践”焦虑

开头叠两个甲:

第一,写下本文是因为 AI 圈天天地震,我就挑最典型、自己也犯过的错来讲讲,就当一种自我解嘲吧。

第二,我绝对欢迎 AI 编程,但"一蹴而就"这种思想不可取。

AI 带给我们最大的浮躁就是:创造结果的时间太多,学习过程的时间太少。

本文旨在表达"先做起来,在做中学"的观点。

如果你点开这篇文章还是为了来找 npm 和 Bun 谁更好的答案的,我告诉你:选择 pnpm。没有什么团队能彻底抛弃 Node.js,pnpm 在兼容性与性能间做到了最好的平衡。OK,你现在可以退出界面接着看下一篇"最佳实践"去了,gogogo。

焦虑是怎么来的

这种焦虑有两根引线。

第一根:AI 降低了动手门槛,也制造了"动手了就是懂了"的幻觉。 你对 AI 说"帮我写一个用户登录系统",Cursor 唰唰唰生成几百行代码,跑通了,你觉得自己"会了"。三个月后系统崩了,你站在满屏红色报错前,发现自己看不懂错误堆栈在说什么。那些底层知识,AI 帮你跳过了,你也心安理得地跳过了。你刚觉得自己能评价工具的优劣,其实连工具出问题了你都修不了。

第二根:信息过载让你觉得"选错"的代价很高。 以前你只知道 npm,现在 Bun、pnpm、yarn、deno 同时推到你面前,社交媒体还不断给你推送"为什么我从 npm 迁移到了 Bun"的爆款文章。"最佳实践"四个字从一种参考,变成了一种压迫。

你刷到的其实是经过剪辑的技术爽文,看多了,你会觉得全世界都在用最新最酷的工具,只有你还在用"老古董"。

AI 工具本身也在替你做判断。Cursor 的补全建议、Copilot 的代码生成,都在潜移默化地告诉你"这样写是主流"。到最后,"最佳实践"是 AI 喂给你的,你连质疑的力气都没有了。

两根引线拧在一起,就拧出了一个问题:你把精力花在了选工具上,而不是写代码上。

工具从来不是瓶颈

先看一张图:

TECHSY 基准测试证实了 Bun 确实快。数据对比如下:

包管理器 冷装 50 个依赖耗时
Bun 0.8 秒
npm 14.3 秒

差距是 13.5 秒。但对于绝大多数项目,这 13.5 秒,远不如"代码里有没有一个未处理的异常"来得致命。

再看代码质量:

ShipLight 对 470 个真实 GitHub PR 的追踪分析:

  • AI 生成代码总问题数:人类的 1.7 倍
  • 逻辑错误:多 75%
  • 安全漏洞:多 2.74 倍

Bug 来自逻辑错误和安全漏洞,跟包管理器选 npm 还是 Bun 没有任何关系。

再看历史。2004 年 ,Mark Zuckerberg 用 PHP 写 Facebook。代码库后来被工程师自嘲为"屎山",但它支撑了 Facebook 从校园网站到全球巨头的全过程。2010 年 用户破 5 亿,PHP 成为瓶颈;2011 年 推出 HipHop,把 PHP 编译成 C++;2014 年 开发 Hack 语言,逐步迁移。PHP 够不够好根本不是重点------重点是他先跑起来了。

所以,不要追求"完美",要追求"价值";不必放大 npm 和 Bun 这种无关痛痒的问题的焦虑。

"最佳实践"是个伪命题

先跑起来,这个道理谁都懂。但很多人没想明白的是:你根本不需要"最佳"的方案。

技术选型的本质是取舍,不是找最优解。你的项目有几个开发者?交付 deadline 有多紧?团队对哪个工具更熟悉?性能瓶颈在哪?这些问题没有标准答案。

  • 一两个人的小项目,用 npm 完全够用,换 Bun 省下来的时间还不够你读一遍迁移文档
  • 几十人的团队,可能需要 pnpm 的 workspace 和严格的依赖管理

别人的"最佳实践"写在他们特定的上下文里,你抄过来,代价谁来承担?

追求面面俱到,本质上是在追求一个不可能完成的任务。你想找一个工具,它速度快、生态全、学习曲线平缓、社区支持好、零配置零坑点。这种工具不存在。

  • pnpm 在磁盘空间上省了,但它的软链接机制带来了新的心智负担
  • Bun 安装快,但你团队里没人写过 Bun 的 bug report

每个选择都有代价,区别只是你把代价花在哪。

所以,选型的时候,问自己一个问题就够了:这个选择在我当前的场景下,最大的风险是什么?能接受,就选它。不能接受,换一个。就这么简单。

坑只能自己踩

很多问题,别人说了,你没体会。自己用了,才会发现。

你在 Twitter 上看到有人洋洋洒洒写了五千字分析 Bun 在处理大型 monorepo 时的内存问题。你觉得醍醐灌顶,截图保存,转发到团队群里。但你们项目只有三个依赖,连 monorepo 是什么都还没搞清楚。那条五千字文章救不了你,但它成功让你多花了一个下午去调研。

别人的经验是二手信息。他踩坑的环境、项目结构、团队配置、使用方式,和你一模一样吗?

就算一模一样,他描述"坑"的方式和他实际"踩坑"的感受,中间还隔着一层语言压缩。你读到的是一篇技术博客,他经历的是一个深夜 debug 的下午。

这在 AI 时代尤其致命。AI 给你的是"标准答案",但标准答案不适用于你的具体情况。Cursor 帮你写了一段代码,它不会告诉你,这段代码在你们的业务高峰期会有什么表现。Copilot 补全了一个函数,但它不知道你们的代码库已经有一个功能相似但实现不同的函数,只是名字不一样。

这些"不知道",AI 不会主动告诉你,你必须自己跑一遍、测一次、踩一次。

这与 AI 最大的价值背道而驰

AI 时代最大的优势是什么?是快速试错

以前你做一个技术调研,要翻几篇博客、读几个 benchmark、在本地搭环境跑测试。一下午过去了,你还在纠结。现在呢?让 AI 给你做个对比分析,一分钟出结果。

这个速度差异意味着什么?意味着你可以用更少的代价,把多个方案都跑一遍,用实际数据说话。

但前提是,你真的去跑了。

纠结选型的过程,恰恰是把"快速"两个字扔进了垃圾桶。你在论坛上翻了两小时帖子,在 AI 对话框里问了三轮"Bun 和 npm 哪个好",在 GitHub 上对比了五个项目的迁移记录。这三个小时,如果你直接选了 pnpm 开工,代码都已经写完了。而 pnpm 和 Bun 在实际项目中的真实差距,远没有论坛上说的那么戏剧化。

你会说:万一选错了呢?选错了又怎样? AI 帮你迁移的速度,比你纠结的速度快得多。bun.lockbpackage-lock.json,一行命令的事。

真正让项目陷入困境的,从来不是包管理器的选择------是代码里的逻辑错误、是架构上的缺陷、是业务理解上的偏差。这些坑,不管你选 npm、Bun 还是 pnpm,一个都躲不掉。

先跑起来,再迭代

如果你也困在"选型焦虑"里,这里有几个我亲测有效的做法:

  1. 给自己设一个"选型截止时间"。工具选型最多花两小时。时间一到,抓阄也要选一个,然后写代码去。你会发现,绝大多数时候,"选 A 还是选 B"对结果的影响,小于"你多写了两小时还是少写了两小时"。

  2. 区分"学习"和"干活"。学习新工具可以,但给它单独的时间段,比如周末下午。工作时间里,用你最熟悉的工具,把事做完。不要让"学习"成为"拖延"的遮羞布。

  3. 刻意保留"不用 AI"的能力。每周抽一点时间,手写一段代码、手动查一次文档、自己画一张流程图。为了保持"底层理解"的肌肉记忆,不是为了复古。AI 是拐杖,但你的腿不能废。

  4. 接受"过时"的必然性。你今天写的代码,三年后看大概率是"垃圾"。这不是你的失败,这是技术进化的常态。重要的是,这三年里你交付了什么价值,解决了什么问题,成长了多少。

工具会过时,能力不会。PHP 成了 Facebook 的瓶颈,但 Zuckerberg 先用 PHP 把 Facebook 跑起来了。

你今天纠结的"最佳实践",三年后可能就被淘汰了。但你在实践中积累的调试能力、架构直觉、问题嗅觉,是任何工具都夺不走的。

把精力花在真正重要的事上。 不是选一个完美的工具,而是用你选的工具,做出一个能用的东西,然后迭代它。

这就是 AI 时代"最佳实践"的真正含义。

相关推荐
lichenyang4532 小时前
从 Web 容器到本地 HAR:我做了一个 HarmonyOS JSBridge 运行时框架 Demo
前端
超神熊猫2 小时前
🧀🧀🧀前端仔如何快速上手python
前端·python
醒过来摸鱼2 小时前
机器学习知识框架:从数据处理到模型部署
人工智能·机器学习
阿黎梨梨2 小时前
AI 推理太慢用户要退钱?前端流式输出(Stream)究竟是何方神圣?
前端·vue.js
只一2 小时前
从0到1吃透AI流式输出:Vue3+DeepSeek实战,解锁丝滑对话体验
前端·vue.js
Anastasiozzzz2 小时前
Agent 生产落地的“硬约束”:深度解码 Harness Engineering 六层架构与闭环自愈设计
人工智能·架构
小饕2 小时前
RAG 进阶|响应生成(Generation)4 大痛点深度剖析:从问题定位到工程解法
人工智能·rag
得物技术2 小时前
得物推荐系统诊断 Agent:从 “调接口” 到 “会思考”|AICon 演讲整理
人工智能·算法·架构
JZC_xiaozhong2 小时前
OA调价审批后,采购调价单如何自动同步到ERP?解决漏录错价难题
大数据·linux·服务器·前端·数据库·数据孤岛解决方案·数据集成与应用集成