Rsbuild
字节跳动 Rstack 工具链出品、官方定义为 「a modern build tool for web applications, powered by Rspack」(基于 Rspack 的现代 Web 应用构建工具)。Rsbuild 的角色是 Rspack 之上的「集成层 / build tool」:底层真正干打包活的是 Rust 写的 Rspack(webpack 兼容内核),Rsbuild 在其上提供开箱即用的零配置 + 语义化构建配置 API(source / output / server / tools 等分层配置)和优秀的开发体验——这层关系恰如 Vite ︰ Rolldown(Vite 是集成层、底层是 bundler)。它定位为 Create React App / Vue CLI / Vite 的替代方案,把 bundler 从 webpack 换成 Rspack,带来 5–10× 的构建性能提升。底层全是 Rust 工具:Rspack 打包、SWC 转译/压缩(替代 Babel/Terser)、Lightning CSS 降级加前缀(替代 autoprefixer)。当前 Rsbuild 2.0(latest 2.0.10,底层 Rspack 2.0.6)。它属于 Rstack 七件套之一——Rspack(打包器)/ Rsbuild(构建工具) / Rslib(库)/ Rspress(站点)/ Rsdoctor(分析)/ Rstest(测试)/ Rslint(检查)。
Rsbuild ≠ Rspack(也 ≠ Rstack)
- Rspack = 底层 Rust bundler(打包器),暴露 webpack 风格的
module.rules/plugins/resolve。 - Rsbuild = 其上的集成层 / build tool,提供语义化分层配置与开发体验;真正打包靠 Rspack。
- Rstack = 整个工具链/生态的总称,Rsbuild 只是其中一员。
「Rsbuild 的底层 bundler 是谁?」答 Rspack。
评价
优点
- 开箱即用 + 语义化配置:零配置可启动,又提供
source/output/server/tools等高层语义化配置,比手写 webpack 配置友好 - 极快:底层 Rspack(Rust),官方基准 dev 构建比 webpack 快 5–10×
- 生产一致性:dev 与 prod 都用 Rspack 打包,避免 Vite 开发态原生 ESM(unbundled)可能带来的 dev/prod 不一致
- 兼容 webpack/Rspack 插件生态:
tools.rspack逃生舱可直接用 Rspack/webpack 原生插件与配置 - Module Federation 一等支持:微前端开箱友好
- 框架无关:插件支持 React / Vue / Svelte / Solid / Preact
- 迁移友好:从 webpack / CRA 迁移最省力(配置/插件/loader 模型刻意对齐)
- Rstack 生态完整:配合 Rslib(库)、Rspress(文档)、Rsdoctor(分析)、Rstest(测试)
缺点
- 强绑 Rspack:
tools.rspack透传的底层配置可能随迭代变化且不走 semver,深度自定义有失效风险 - 默认不做类型检查:SWC 只剥类型,需
@rsbuild/plugin-type-check或tsc - 框架支持全走插件:核心包不内置框架能力,React/Vue 等都要手动装对应插件
- 并非每项都最快:官方基准里 Vite 在生产 build 和 HMR 上数字反而略优,别误以为「全面碾压 Vite」
- 2.0 破坏性变化多:
@rsbuild/core纯 ESM、Node 门槛升到 20.19+、server.host默认改localhost、performance.chunkSplit废弃 - 分层概念多:
dev段 vsserver段、顶层pluginsvstools.rspack.plugins、Rsbuild vs Rspack,新手易混 - 生态/社区规模:不及 webpack / Vite 成熟,部分能力依赖社区插件