JavaScript 工具链今天被 Rust 接管了——我把 VoidZero 生态的全貌和选型账全算清楚了
三年前我盯前端工具链,每次配构建就是一场和 Node.js 内存的拉锯战。2026 年了回头看,整个 JavaScript 工具链——从 Parser 到 Linter 再到 Bundler——全部被 Rust 重写了,而且这套新工具链不是「快了而已」,是整个开发模式都变了。
这篇文章不聊单个工具,把 VoidZero 生态、Rspack 2.0 和整个 2026 前端工具链格局全拆开,帮你把「该用哪个」的账算清楚。
先搞清楚这几个玩家是谁
Oxc——VoidZero 的解析器层。Oxc 不是单个工具,是一个工具箱,里面装着 parser、linter、transform、formatter,都用 Rust 写的。其中最被关注的是 oxlint,一个 type-aware linter,跑分比 ESLint 快 50-100 倍。
为什么快?传统 ESLint 用 V8 解析 JavaScript,Oxc 用 Rust。Rust 没有 GC 停顿,内存布局是确定的,同样的解析任务 Rust 就是比 JavaScript 快一到两个数量级。大型项目里 ESLint 要跑几分钟,Oxc 几秒钟就完了。
实际用起来:Oxlint 有 ESLint 兼容层,.eslintrc 大部分规则可以直接迁移。但需要注意:Oxlint 还在活跃开发,有些高级 ESLint 插件功能暂时没有。生产项目建议先用 npx oxlint --plugin-typescript 跑 CI 里做 type-aware 检查,把传统的 eslint --cache 当作降级方案。
Rolldown——VoidZero 的打包层。Rolldown 是用 Rust 重写的 Rollup,目标是一行不动地跑所有 Rollup 插件,同时把性能提升 10-30 倍。
它现在是 Vite 8 的默认引擎。Vite 8 Beta 已经跑在 Rolldown 上了,开发服务器冷启动和热更新都走 Rolldown,不走原来的 esbuild 加 Rollup 双打包器。Rolldown 对 Rollup 插件的兼容性目前已经覆盖主流场景,实测下来:纯 JS 项目基本无缝迁移;用了 @rollup/plugin-typescript 的项目需要改成 tsx 或直接让 Rolldown 内置的 TypeScript 处理器接管;用了 rollup-plugin-vue2 这类非官方插件的可能要换方案。Rolldown 内置了 minify、jsx 和 WASM 支持,不用像以前那样装一堆插件。
Rspack——另一个 Rust 打包器,由 Rsbuild 团队维护,核心是兼容 webpack 配置。Rspack 2.0 支持直接使用 Rollup 插件,并且原生接入了 Rolldown 的执行层。
Rspack 2.0 相比 1.x 升级很大:webpack 配置兼容性从 70% 提升到了 90% 以上;内置了 TypeScript 类型检查,不再需要额外装 ts-loader;对 resolve.alias、resolve.extensions 这些高频 webpack 配置的支持更完整。如果你在维护一个老 webpack 项目想迁移,Rspack 2.0 是目前成本最低的路径。
2026 工具链全景图
三个工具摆在一起,完整链路是这样的:
代码 → Oxc Parser → Oxlint(lint + type-aware check)
→ Rolldown(bundling)
→ Rspack(webpack 兼容 bundling)
Rolldown 和 Rspack 不是竞争关系,是分工关系。Rolldown 面向 Vite 生态,追求和 Rollup 100% 兼容;Rspack 面向 webpack 存量项目,追求配置级兼容。Rspack 2.0 底层已经在用 Rolldown 的执行层,两个项目在收敛。
VoidZero 是这背后的公司,定位是「JavaScript 工具链基础设施公司」,拿了融资,目标是做前端工具链的「操作系统」。这和当年 Babel 插件作者用自己的业余时间维护工具完全不是一个量级。
开发者实际感受是什么
说技术细节你们可能没什么感觉,说实际数字。
Type-aware linting 进入 CI 的可能性第一次出现了。
以前 ESLint 做类型检查要跑很久,大项目里 type-aware linting 只能放在本地跑,CI 里跳过。Oxlint 把这个时间压到了几十秒,大型项目的 type-aware 检查第一次真正进了 CI gate。
构建时间量级变了。
以前大型前端项目配一次 CI,构建阶段(install → lint → type-check → build)加起来 10-20 分钟很正常。Rolldown 把 build 这步推进到了秒级,整个流水线的瓶颈从构建转移到了测试和部署。如果团队已经用了 Vite,Vite 8 升级到 Rolldown 引擎之后,现有构建时间直接按 10-30 倍压缩。
工具链统一了。
以前解析 JavaScript 有一整套工具(Babel、acorn、espree、meriyah),linter 是一套(ESLint),bundler 是一套(Rollup、Webpack、esbuild),各玩各的,AST 格式不统一,插件没法复用。Rust 重写之后,整个链路共享同一套 Rust 原生 AST,数据结构不需要跨 FFI,插件开发和调试都比以前干净得多。
怎么选
在维护老项目:
看你的构建工具。如果项目跑在 Vite 上,盯紧 Vite 8 正式版发布,升级到 Rolldown 引擎;如果项目是 webpack,评估 Rspack 2.0 的兼容性,特别是 resolve.alias 和 module.rules 里的 loader 配置。迁移路径建议先在预发环境跑,确认没有兼容问题再切主流量。
在开新项目:
直接用 Vite 8 Beta 加 Rolldown。新项目没有历史包袱,Rolldown 生态的插件覆盖度已经足够应付大多数场景。TypeScript 项目直接用 pnpm create vite --template vue-ts,等 Vite 8 正式版出来升级就行。
在用 ESLint:
可以立刻试 Oxlint。用 npx oxlint --plugin-typescript 替换掉原来的 typescript-eslint,把检查结果和 ESLint 比对,确认没有误报再正式切进去。不要一上来就在 pre-commit hook 里全量切换,先在 CI 里跑一段时间看数据。
总结
JavaScript 工具链被 Rust 接管这件事,2026 年已经不是趋势,是现实。VoidZero 生态(Oxc + Rolldown + Rspack)把整个链路收敛到了一个可以互操作的 Rust 原生工具链上。
对前端工程师来说,真正的变化不是「快了一点」,是从此 type-aware linting 在 CI 里真正可用,是构建时间从分钟级压缩到秒级,是工具链第一次有了统一的数据结构和插件生态。
下一步建议:选一个你项目里最慢的环节,今天跑一下 Oxlint 或 Rolldown 的 benchmark,把数字记下来,等你需要和团队解释为什么要迁移的时候,这就是最好的论据。
评论区
登录后可评论。