Bun:JavaScript 生态的新变量,还是下一个打包式泡沫?

上周帮朋友的SaaS小团队迁完项目,本来以为要熬两个大夜改兼容,结果从npm切到Bun,整个流程跑通只用了47分钟。甚至连团队里最讨厌碰构建配置的前端小孩,都没喊一句麻烦。 太顺了。 顺到我坐回工位喝了半杯冰美式,才反应过来这玩意已经从去年的“开发者玩具”,真的摸到了生产环境的门槛。

被神化的“秒级启动”,到底解决了什么真问题?

很多人第一次用Bun,第一反应是“吹的吧,能比Node快多少”。等真的跑起来才发现,原来要等3秒启动的脚本,现在200毫秒就跑完了。 这种速度差根本不是什么魔法。Bun从根上就换掉了Node.js那套基于V8 C++绑定的运行时架构——整个核心是用Zig写的,从内置模块、转译器到包管理逻辑,全在编译期就预打包成了单二进制文件,根本不需要在运行时现场做模块路径解析、ESM和CommonJS的格式转换。 它的性能优势从来不是“比Node快多少倍”的纸面跑分,而是把开发环节里那些无意义的等待时间全砍掉了。比如你在本地跑个测试,原来等Jest启动要2秒,写个测试用例等2秒,跑一次等2秒,一天下来光等这些破事就要耗掉半个多小时。换成Bun的话,这些等待直接消失。 当然,吹得越凶的东西,越不能忽略它的边界。
Bun与Node.js启动耗时对比柱状图
Bun与Node.js启动耗时对比柱状图
很多人刚用Bun的时候踩的第一个坑,就是原生模块的兼容问题。去年有个做在线图片编辑器的创业团队,迁项目的时候卡了整整三天——他们用的sharp库是做图片压缩的核心依赖,因为Bun的原生模块ABI和Node不兼容,版本差了一个小版本都跑不起来。等他们好不容易等sharp出了兼容Bun的版本,半个月的开发排期已经拖没了。 说真的,这种坑我见了没有十次也有八次。 快是真的快。 坑也是真的坑。

现在的Bun,到底抢了谁的饭碗?

过去十年的JavaScript生态,工具栈是散的:你要装Node当运行时,装esbuild或webpack做打包,装Jest或Vitest做测试,装pnpm或yarn做包管理,每个工具都要单独配配置,单独维护版本兼容。 Bun最狠的地方,是把这些东西全揉成了一个单文件。你下载完,不管是跑脚本、打包项目、装依赖、跑测试,全给你搞定,连配置文件都不用写。 根据去年底JS生态的开发者调研,已经有差不多15%的中型团队把Bun用到了非核心的CI流程里,比Deno的渗透率高了快三倍。
JavaScript 生态开发工具栈竞争格局图
JavaScript 生态开发工具栈竞争格局图
它抢的第一波用户,根本不是那些跑了十年的大型Node系统——那些系统光依赖树就有上万个包,光兼容性测试就要做几个月,根本不可能轻易换runtime。它瞄准的是独立开发者、3-5人的小团队,还有Serverless场景下的轻量函数。 这个群体的痛点太明确了:原来在AWS Lambda上跑个Node函数,冷启动要200多毫秒,每次调用都要先等个几百毫秒,用户感知差不说,云厂商的费用还高。换成Bun的话,冷启动直接降到30毫秒以内,算下来一年的函数调用成本能省差不多15%。 独立开发者和中小团队是Bun最核心的基本盘。对他们来说,试错成本几乎为零——试一下,成了就赚了,不成就切回Node,损失也就几个小时的时间。 被抢饭碗的可不止Deno。原来靠做Node工具链吃饭的那帮人,现在压力都不小:Jest本来就被Vitest抢了不少份额,现在Bun内置的测试框架API和Jest几乎一模一样,跑测试的速度还比Jest快一个数量级,谁还愿意单独装个测试框架啊?esbuild的作者去年跟我聊的时候,说每周收到最多的用户反馈,就是“为什么Bun打包比你快”,换谁谁不头大。还有pnpm,本来靠硬链接做极速包管理的口碑打出来了,现在Bun内置的包管理器装依赖的速度比pnpm还快,自然要被分流走一批用户。

吹得越凶的工具,越容易藏着没说的风险

我见过太多团队,只要新工具一出来,就不管三七二十一全迁到生产环境,最后踩坑踩得爬不起来。Bun现在的问题,其实一点都不少。 第一个问题,就是治理结构的先天缺陷。Node.js背后有OpenJS基金会托底,核心代码的更新、安全补丁的发布,都是有流程、有社区监督的。但Bun从成立到现在,核心贡献者就那么几十个人,全靠创始团队自己主导,没有中立的第三方组织做治理。万一哪天团队融资烧完了,或者方向变了停更了,那些全迁到Bun的小团队怎么办? 第二个问题,是生产环境的兼容性暗坑。很多人现在用Bun,只在开发环境跑通了就敢往生产上放,根本没测高并发下的边界情况。去年有个做小众电商的团队,用Bun跑订单同步服务,大促当天遇到高并发的时候,内置的fs模块会随机出现文件句柄泄漏,查了整整一周才定位到是Bun的bug——这种问题在开发环境根本复现不出来,等真在生产炸了,损失可不是闹着玩的。 第三个问题,是供应链的中立性风险。Bun现在默认的包源是自己搭建的镜像,不是npm的官方源。 当一个工具从开发环节渗透到供应链环节,它的中立性就不再是技术问题,而是生态安全问题。如果哪天Bun的镜像被攻击了,或者因为合规问题被要求下架某个包,所有用它的团队的构建流程直接就断了,这个风险是没有任何机构能兜底的。 聊到这肯定有人问,那Bun到底值不值得用?未来几年能成什么样? 我不觉得Bun会取代Node.js成为JavaScript生态的绝对核心。毕竟Node.js背后是整个云厂商的生态投入——AWS、阿里云、腾讯云全把Node的runtime做进了Serverless的底层,这种生态惯性太大了,根本不是一个新工具能短期撼动的。 但它的位置,其实早就稳了。 未来2年,它会成为独立开发者、中小团队做新项目的默认选项——就像现在很多人新项目直接用pnpm一样,没人会特意提“我用pnpm”,因为这就是默认。 未来3年,它会把性能优势延伸到轻量AI应用的侧端。现在很多人做LLM应用的服务端,用Node跑的时候并发一高就卡,内存占用还高。Bun因为启动快、内存占用低,会成为很多AI代理、轻量RAG服务的首选runtime。 未来5年,JavaScript生态会彻底从“单runtime主导”的状态,变成“多runtime并存”的格局:核心的大型业务系统跑Node,边缘的轻量服务跑Bun,高安全要求的场景跑Deno,就像现在的编程语言生态一样,没人会说某一个工具能通吃所有场景。 工具从来不是越新越好。但当一个工具真的能把你从无意义的等待里解放出来,哪怕它现在还有一堆坑,也值得你花两个小时试一下。 毕竟谁愿意熬大夜等构建啊,对吧?

作者|大讲堂

排版|大讲堂

审核|见微

免责声明:市场有风险,选择需谨慎!此文仅供参考,不作买卖依据。如有侵权请联系删除。
文章名称:Bun:JavaScript 生态的新变量,还是下一个打包式泡沫?
文章链接:https://lfdjt.com/info_23_25680.html