满场哄笑。
笑完了又有点发慌。毕竟在座的人谁没经历过那种为了配一个工具链熬到凌晨三点的时刻?
被Node绑定的前端工具链,攒了整整十年的烂账
2009年Node.js刚出来的时候,创始人Ryan Dahl本来是想做一个能在服务端跑JavaScript的高性能运行时,谁也没想到,这个为服务端设计的工具,后来成了整个前端生态的“万能底座”——从本地开发的热更新,到代码转译,到单元测试,到线上部署的构建流水线,所有之前需要用不同语言、不同工具完成的环节,全被塞到了Node.js的生态里。乱套了。
你要装依赖,得用npm或者pnpm,配各种镜像源,处理版本冲突;你要转译TypeScript,得装ts-node或者esbuild,写一堆适配配置;你要跑测试,得装jest或者vitest,每个框架的配置文件格式都不一样;你要打包上线,得配webpack或者Vite,光一个loader的配置就能写满半页文档。
我之前见过一个200人规模的前端团队,光专门维护工具链的工程师就有6个。每天的工作不是写业务代码,是帮大家解决“为什么我本地跑不起来项目”“为什么CI构建又失败了”这种破事。

Bun不是“更快的Node”,是把所有环节捏成一个原生二进制
很多技术博主第一次介绍Bun的时候,总喜欢说“这是一个比Node快3倍的JavaScript运行时”。错了。这根本不是Bun的核心价值。
你仔细看Bun的发布说明就会发现,它从第一天开始,就没打算只做一个运行时——它用Zig语言从零写了一个一体化的二进制文件,把包管理器、TypeScript转译器、打包器、测试框架、JSX运行时、甚至Node API的兼容层,全打包在了同一个可执行文件里。没有第三方依赖,没有需要手动拼接的胶水层。
之前有团队做过基准测试:一个包含120个包的中型Monorepo,用pnpm安装依赖需要4分17秒,用Bun安装只需要21秒;跑全量单元测试,用vitest需要2分43秒,用bun test只需要29秒;打包生产环境的前端资源,用Vite需要1分12秒,用Bun打包只需要19秒。
快到什么程度?
之前你改完一行代码,要盯着终端等个两三秒才能看到热更新的结果,现在代码刚敲完,页面已经刷出来了。
对Node核心API的兼容度是Bun能否大规模落地的核心门槛。目前Bun的兼容覆盖度已经达到90%以上,绝大多数日常用的npm包都能直接跑,只有少数依赖底层系统调用的原生模块,比如一些大数据处理SDK、特定硬件的驱动库,还会出现报错。

现在的落地真相:没人敢直接把生产环境押上去
如果你现在去翻国内互联网公司的技术博客,会发现一个很有意思的现象:所有提到Bun的团队,都在说自己“在本地开发环境和CI流水线里用了Bun”,没有一个敢说“我们把线上的Node服务全换成Bun了”。太正常了。
前端圈被新技术坑过的人太多了。2016年大家刚从jQuery迁到React的时候,踩过webpack版本不兼容的坑;2020年Vite刚出来的时候,多少团队因为生态不全回退到了Webpack?现在Bun虽然快,但是毕竟才发布正式版不到两年,谁也不敢当那个第一批把生产环境全押上去的冤大头。
目前已经跑通的落地场景其实很务实:比如国内某做企业SaaS的中型团队,把CI流水线里原来的“装Node-装pnpm-装esbuild-装jest-跑构建”的五步流程,全换成了单个Bun命令,整体流水线的运行时间砍了62%,每个月光云服务器的成本就省了14万。但是他们线上跑的Node服务,半行代码都没改。
还有大量的独立开发者、小型创业团队,已经直接把Bun当成本地开发的默认工具了——毕竟小团队没有那么多历史包袱,快就是最大的竞争力。
哦对了,上次有个开发者跟我说,他用Bun写的静态博客生成器,构建1200篇MD文档的时间是0.7秒,之前用Hexo构建同样规模的内容要11秒。
被忽略的隐忧:一体化工具链的长期锁定风险
之前的工具链虽然碎,但是有个最大的好处:可替换性强。你觉得npm慢,可以换pnpm;你觉得webpack配置太麻烦,可以换Vite;你觉得jest跑测试太慢,可以换vitest。每个环节都是独立的开源项目,没有谁能把你绑定死。但Bun是一体化的。
一体化带来的供应商锁定风险,是所有团队在评估Bun时最容易忽略的长期成本。如果未来两三年Bun真的把整个前端生态都拉起来了,大家的项目全是基于Bun的API、Bun的配置格式、Bun的打包规则写的,那万一哪天Bun的核心团队调整方向——比如开始收商业授权费,比如停止对某个API的维护,甚至直接把开源仓库关了——那所有押注的团队,就得花几个月甚至几年的时间,把整个项目迁回原来的Node生态。
这种事不是没发生过。当年Flash的开发者被Adobe逼着迁到HTML5的时候,多少团队花了整整两年才完成迁移;当年webpack把配置体系做的全是私有规则的时候,多少团队想换个打包工具都下不了手。
还有个很现实的问题:Bun目前的核心开发决策权,完全掌握在创始人手里,虽然项目是开源的,但并没有交给中立的基金会来托管。和Node.js现在由OpenJS基金会治理、有一套公开的决策流程不一样,Bun的未来方向,很大程度上取决于核心团队的个人判断。
站在2024年的时间点往未来3-5年看,Bun不会像很多技术博主吹的那样“把Node.js彻底淘汰”,但一定会重新定义前端工具链的默认组合。
未来3-5年Bun的最大增量场景不是替代生产环境的服务端运行时,而是重构本地开发与CI构建的全流程工具链。
具体来说,第一,未来2年内,Bun对Node API的兼容度会拉到99%以上,那时候绝大多数中小团队会直接把本地开发、CI构建的环节全换成Bun,甚至会有新的全栈框架,直接基于Bun的原生API开发,不用再做Node兼容层的适配。第二,大厂不会全量切换到Bun跑线上服务,但一定会把Bun作为工具链的核心底座,把原来分散的pnpm、esbuild、jest、ts-node等工具,全换成一体化的Bun,减少工具链的维护成本。第三,会围绕Bun长出新的生态位:专门适配Bun的调试工具、监控工具、私有包源,甚至会有新的前端框架,把Bun的原生能力作为核心竞争力。
说真的,我到现在都记得2018年第一次配webpack的时候,对着400行的配置文件发呆的样子。那种明明写的业务代码没bug,但是构建跑不起来的崩溃感,谁经历谁知道。
技术迭代从来不是为了让大家学更多的配置,而是为了把那些没价值的重复劳动全干掉。
Bun到底能不能成?
谁知道呢。
反正我现在已经在本地把所有项目的包管理器换成Bun了。
作者|大讲堂
排版|大讲堂
审核|安然
大讲堂