下班之后没人亲亲,敲段代码哄自己开心。写个demo修完bug,誓让女神喊你哥哥。
背景
这是一篇从Cloudflare 官宣收购 VoidZero——尤雨溪创立不到两年的公司,Vite、Vitest、Rolldown、Oxc 全线工具链的幕后团队的新闻引发的思考。
消息一出来,大家的想法都是不同: 有人安心:Vite 终于有了大厂背书,不用再担心”尤雨溪哪天不想维护了怎么办”。 有人焦虑:开源工具被云厂商收购,说是开源,会不会原产品不维护,借机推出创建一个属于自己的工具。 还有人感慨:尤雨溪把一个人干成一家公司,又把公司卖给巨头,太强悍了。
我想的是一个其他问题,个人开发者做的项目,最终的归宿到底是什么,以及我们选工具链的时候,到底该不该焦虑”维护者是不是大厂”?
一、尤雨溪的路径:个人开发者能走到的最好结局
2013年到2026年,13年的时间,完成了Vue.js诞生到VoidZero 团队整体加入 Cloudflare,注意几个关键细节:
第一,Cloudflare 收购的不是 Vite 这个开源项目,而是 VoidZero 这家公司和核心团队。 Vite 仍然保持 MIT 协议,完全开源,尤雨溪继续领导项目。Cloudflare 还专门设立了 100 万美元的 Vite 生态基金,由核心团队独立管理,只给社区贡献者用。
第二,这不是”卖身”,这是一条完整的商业闭环。 把开源项目做成公司 → 让公司被收购 → 收购后项目继续开源、团队继续领导。VoidZero 提供了一个堪称完美的样本。
第三,这条路几乎无法复刻。 Vite 诞生于 Vue 生态,庞大的 Vue 社区给它提供了起步的基础。2024 年 VoidZero 成立时,Vite 周下载量已经突破 5000 万。它不是白手起家,而是踩着前一个爆款产品的肩膀,做成了下一个明星项目。
Vite不是慢慢死去,不是无人接手,而是在巅峰时期,以一个体面的价格、一份尊重开源的承诺,完成了一次优雅的转身。13年,也可以看作刚毕业的大学生,干到35岁,面临着程序员的大坎该如何度过。
但不得不承认:这是个人开发者项目能走到的最好结局之一。
二、个人开发者项目的三种归宿
个人开发者做的开源项目,归宿大致有三种
归宿一:悄然死去
这是绝大多数项目的命运。
GitHub 上有数以百万计的仓库,大部分在最后一次 commit 之后,就再也没人碰过。README 里写着”actively maintained”,issues 堆了几百个没人回复,最后一条更新停留在三年前。
没有告别,没有声明,就那么静静地躺在那里,像一座没有墓碑的坟。
归宿二:被社区接手
少数幸运儿,原作者不维护了,社区里有人站出来 fork 一份,继续走下去。
但这需要天时地利人和:项目本身要有足够的影响力,社区要有足够多的人关心,还要有人愿意免费接手这个烫手山芋。
Babel 早期是 Sebastian McKenzie 一个人做的,后来交给了社区团队维护。这种”和平交接”是理想状态,但可遇不可求。
归宿三:商业化 / 被收购
极少数项目,走出了一条商业化的路。
Vue 靠赞助商模式运转了多年,Vite 从开源项目变成了公司产品,最后被 Cloudflare 收购。Tailwind CSS 从一个个人项目变成了 Tailwind Labs 公司。Next.js 从一个开源框架变成了 Vercel 的核心商业资产。
这是所有个人开发者梦寐以求的路径,但走到这一步的,万中无一。
但还有第四种——被更好的东西替代
这才是常态。
不是死去,不是被接手,不是被收购,而是——一个更好的产品出现了,你自然就被替代了。
这不是失败,这是技术进化的基本规律。
三、Layui 的启示:最火的也扛不住时代的洪流
说到”被替代”,就不得不提 Layui。
如果你在 2016-2020 年做过国内的后台管理系统,你大概率用过 Layui。那时候,Layui 几乎是国内后台 UI 框架的半壁江山——开箱即用、文档友好、学习成本极低,后台管理项目的首选。
2021 年 10 月 13 日,Layui 官网正式下线。
作者贤心在公告里说了一段话,大意是:这不是终结,只是重归到开源的纯粹中来。但所有人都听得出来,那是一种无力、无奈,甚至有些无助的告别。
Layui 是失败了吗?
不。Layui 在属于它的时代里,做到了极致。它服务了无数开发者,支撑了无数项目,解决了一个非常具体的问题:在 jQuery 时代,如何快速搭建一个好看的后台管理界面。
但时代变了。
Vue、React、Angular 三大框架崛起,组件化成为主流,jQuery 逐渐退出舞台。Layui 的设计理念——基于 jQuery 的模块化 UI——在新范式面前,显得力不从心。不是 Layui 做得不好了,而是它赖以生存的技术土壤消失了。
最火的也扛不住时代的洪流。 这句话听起来悲壮,但其实是技术世界最朴素的真相。
四、前端构建工具的进化链:每一代都在埋葬上一代
Layui 不是孤例。前端构建工具的进化史,就是一部”你方唱罢我登场”的替代史:
Grunt → Gulp → Webpack → Vite → ???
Grunt(2012 年):配置驱动的任务自动化,曾经是前端构建的标配。配置文件冗长,性能一般,但解决了”手动复制粘贴文件”的问题。
Gulp(2013 年):用流(stream)的方式处理文件,配置更简洁,速度更快。一时间,“Gulp 替代 Grunt”成了社区共识。
Webpack(2014 年):把一切视为模块,支持代码分割、Tree Shaking、HMR。功能强大但配置复杂,初学者看着 webpack.config.js 想哭。但它统治了前端构建整整六年。
Vite(2020 年):利用浏览器原生 ES Module,开发阶段免打包,启动速度从分钟级降到毫秒级。Webpack 的开发者一夜之间倒戈。
你看这个链条:每一代工具都在解决上一代的问题,同时埋下下一代的问题。
Grunt 解决了”手动构建”,但配置太繁琐 → Gulp 用流简化了配置,但缺乏模块化能力 → Webpack 补上了模块化,但太重了 → Vite 用原生 ESM 做到了极速启动,但……
Vite 的问题是什么?也许是:它依赖的浏览器 ESM 能力,在未来可能被更原生的方案取代。又或者,AI 生成代码的工作流会催生全新的构建范式。
但这不重要。 重要的是:Vite 在 2020-2026 年这个区间里,是最好的选择。这就够了。
五、“维护者是不是大厂”——一个伪命题
很多开发者在选型时,会有一个执念:优先选大厂维护的工具,因为更”稳”。
这个想法听起来合理,但经不起推敲。
大厂的”稳定”是假象
Google 的”墓地名声”在外:Google Reader、Google+、Inbox、Allo、Duo、Stadia……一长串被砍的产品名单。AngularJS(1.x)被 Google 亲手废弃,强制迁移到 Angular 2+,社区怨声载道。
Microsoft 收购 GitHub 后,一度让开发者担心”微软会不会把 GitHub 变成 Azure 的附庸”。虽然目前看来运营还算克制,但谁能保证下一个 CEO 不会改变策略?
Facebook 维护的 React 够”大厂”了吧?但 React 的重大版本更新(Hooks、Server Components、React 19 的各种变化)每次都在社区引发”迁移焦虑”。
大厂维护的工具,稳定的是”公司不会倒闭”,不稳定的是”产品路线随时可能变”。
独立开发者的”不稳定”也是假象
反过来想,Vue 是尤雨溪一个人做起来的,Vite 是 VoidZero 这个 17 人的小团队做的,Tailwind 是 Adam Wathan 一个人起步的。它们都不”大厂”,但它们在各自领域做到了第一。
为什么?因为独立开发者的利益和社区利益是一致的——他们靠社区信任吃饭,不敢乱来。大厂的工具如果方向变了,公司照样活;独立开发者的项目如果失去信任,什么都没了。
这种”没有退路”的处境,反而是一种最强的约束力。
你该看的不是”谁维护”,而是”它是否解决了当下的问题”
选型时真正该问的问题:
- 它解决了我的问题吗? 解决得好不好?
- 社区活跃度如何? issues 有人回吗?PR 有人合吗?
- 文档质量如何? 我能快速上手吗?
- 迁移成本如何? 如果有一天要换,换起来痛不痛?
至于”维护者是 Google 还是一个独立开发者”——这个问题的重要性,远低于你以为的程度。
六、技术迭代的底层逻辑:替代,不是共存
如果你把技术工具看作”生物”,很多焦虑就消失了。
每一种工具都有生命周期:诞生 → 成长 → 巅峰 → 衰退 → 被替代。
这不是bug,这是技术进化的运作方式。
Grunt 被 Gulp 替代了,但 Grunt 解决的”自动化构建”问题依然存在,只是换了一个更好的解决者。
Gulp 被 Webpack 替代了,但 Gulp 解决的”流式处理”问题依然存在,只是被融入了更完整的模块化方案里。
Webpack 会被 Vite 替代(或者说正在被替代),但 Webpack 解决的”模块打包”问题依然存在,只是 Vite 用更聪明的方式解决了它。
问题不会消失,只是解决者在迭代。
这意味着什么?
意味着你不需要担心一个工具是否会持久维护。因为当它停止维护的时候,一定是因为出现了更好的替代品——而不是因为这个问题不存在了。
如果 Vite 哪天不维护了,那一定是因为有人做出了比 Vite 更好的东西。那时候你该做的不是惋惜,而是去学那个更好的东西。
如果 Layui 当年没有被 Vue/React 生态替代,那反而说明前端技术停滞了——那才是真正该焦虑的事。
七、所以,技术选型到底该怎么选?
说了这么多,落到实操上,几条原则:
原则一:选当下最合适的,不是”未来最安全”的
没有”未来最安全”的工具。你今天选的”大厂背书”的工具,三年后可能被大厂亲手废弃。与其赌一个不确定的未来,不如选一个当下能最好解决你问题的工具。
“当下最好”是一个客观判断,“未来最安全”是一个主观幻想。
原则二:关注解决能力,而非维护者背景
一个独立开发者做的工具,如果解决了你的问题、社区活跃、文档清晰,那就用。一个 Google 做的工具,如果方向飘忽不定、Breaking Change 频繁,那就谨慎。
工具的价值在于它能做什么,不在于谁做的。
原则三:做好”随时能换”的架构准备
这是最重要的一条。
技术选型最大的风险,不是选错了工具,而是把工具和业务深度耦合,换不了了。
好的架构,应该让工具成为可替换的零件。你的业务逻辑不应该直接依赖某个构建工具的特定行为;你的组件应该基于标准 Web Components 或框架标准 API,而不是某个 UI 库的私有扩展。
选型时不仅要看”好不好用”,还要看”换起来痛不痛”。
原则四:别把工具当信仰
技术圈最荒诞的现象之一,就是”工具粉”——Vue 粉和 React 粒互撕,Vite 粉和 Webpack 粉对骂,Tailwind 粉和手写 CSS 党互相鄙视。
工具是拿来用的,不是拿来拜的。
今天你用的工具,明天可能就被替代了。如果你把身份认同绑定在一个工具上,那工具被替代的时候,你岂不是也跟着”被替代”了?
保持距离,保持理性,保持随时能切换的心态。
原则五:接受”被替代”是常态
这是最底层的心态建设。
当你选一个工具时,就应该在心里接受一个事实:这个工具终将被替代。 不是可能,是一定。
接受这一点之后,你会发现技术选型变得轻松了很多——不需要纠结”五年后这个工具还在不在”,因为五年后大概率有更好的选择出现了。
你只需要问自己一个问题:在今天,它是不是最好的选择?
如果是,用它。如果不是,换掉它。就这么简单。
结语:Vite 被收购不是终点,Layui 停更也不是悲剧
Vite 被收购了。项目继续开源,团队继续主导,尤雨溪从个人开发者变成了硅谷巨头的部门负责人。这是一个个人开发者项目能走到的最好结局。
Layui 停更了。官网下线,文档迁移到 GitHub。但它服务过的一代开发者不会忘记,在 jQuery 时代,有一个叫贤心的人,给他们提供了一个开箱即用的后台 UI 方案。
它们都完成了自己的使命——在属于自己的时代里,做到了最好。
下一个时代,自然会有下一个时代的答案。
也许是 Rspack,也许是 Turbopack,也许是某个还没被发明的工具。也许 AI 会彻底改变我们写代码的方式,“构建工具”这个概念本身都会被重新定义。
但这不重要。
重要的是:不要让”这个工具能活几年”的焦虑,绑架了你今天的选择。
因为它活不了几年。没有工具能活几年。
而当它死去的时候,一定有一个更好的东西,已经站在了它的尸体上。
这就是技术世界最残酷,也最浪漫的规律。
最后说一句: 选工具这件事,就像选鞋子。合脚就穿,不合脚就换。你不需要担心这双鞋能穿几年——因为等它坏了的时候,你的脚已经长大了,你需要的是一双更大的鞋。
别焦虑了,去写代码吧。