Rspack
以 Rust 构建、采用现代化 Webpack API 的高性能 Web Bundler,兼容大量 Loader 与 Plugin。
项目概述
Rspack 以并行 Rust 架构提升启动、构建和热更新速度,同时保留 Webpack 熟悉的配置、Loader、Plugin、代码拆分与 Module Federation 能力,适合大型应用和 Webpack 迁移项目。
Rspack 是由 ByteDance Web Infra 团队发起、采用 MIT 许可证的高性能 Web Bundler。核心使用 Rust 实现,并以多线程、增量编译和原生优化器加速大型应用构建;配置、Loader 架构与 Plugin API 尽量对齐 Webpack 5,降低存量项目迁移成本。Rspack 2 在继续兼容 Webpack 生态的同时,引入更符合现代 JavaScript 的默认值和输出。Rspack 本身是低层 Bundler;对于缺少复杂定制的新项目,官方通常优先推荐使用其上层构建工具 Rsbuild。
主要特点
Rspack 将 Rust 并行性能与 Webpack 成熟的依赖图和扩展模型结合起来。
Rust 并行架构
核心编译与优化阶段使用 Rust 实现,并利用多核并行处理模块图,面向大型应用降低冷启动和生产构建时间。
Webpack 配置兼容
Entry、Output、module.rules、resolve、optimization、devServer 等主要配置沿用 Webpack 思路,迁移通常可以从重命名配置和替换包开始。
Loader 生态复用
兼容大多数 Webpack Loader,包括 sass-loader、less-loader 和 vue-loader;高频转换可改用内建 SWC 与 Lightning CSS 获得更好性能。
Plugin API 与内置插件
支持大量 Webpack Plugin Hook,并提供 Rust 实现的 HtmlRspackPlugin、CopyRspackPlugin 和压缩插件等高性能替代方案。
内置 SWC
builtin:swc-loader 可转换 JavaScript、TypeScript、JSX 和 TSX,Rspack 2.1 还能直接启用 Rust 版本的 React Compiler。
内建 CSS 能力
支持 CSS、CSS Modules 和 CSS 提取,并可使用 builtin:lightningcss-loader 与 LightningCssMinimizerRspackPlugin 完成转换和压缩。
增量构建与快速 HMR
持续维护依赖图并只重新计算受影响模块,配合 Dev Server 为大型应用提供快速热更新。
代码拆分与 Tree Shaking
支持动态 import、SplitChunks、长期缓存、未使用代码消除和 Barrel File 优化,适合复杂应用的生产资源治理。
Module Federation
提供 Module Federation 支持,可在运行时共享远程模块和依赖,承接已有 Webpack 微前端方案。
持久化缓存与懒编译
Persistent Cache 可跨进程复用构建结果,Lazy Compilation 则延后处理尚未访问的模块,进一步改善大型项目反馈速度。
Rstack 工具链
可与 Rsbuild、Rslib、Rspress、Rsdoctor 和 Rstest 等工具组合,覆盖应用构建、库打包、文档、分析和测试。
适用场景
当构建性能已经影响团队效率,但项目又难以放弃 Webpack 生态时,Rspack 尤其值得评估。
Webpack 大型应用迁移
项目依赖 Loader、Plugin 和细粒度优化配置,但构建速度已成为瓶颈时,可分阶段替换核心包并保留多数工程约定。
中大型 React 或 Vue 应用
内置 SWC、CSS、Dev Server 与框架插件适合模块数量多、HMR 频繁且需要复杂生产拆包的应用。
微前端平台
需要继续使用 Module Federation,并希望改善多个容器和远程模块构建速度时,可以在兼容验证后迁移。
Monorepo 多应用构建
持久化缓存、并行构建和共享配置适合多个前端应用、组件包与环境目标共同维护的仓库。
复杂资源流水线
既可以复用 Sass、Less、模板和自定义 Loader,也能逐步替换为 Rust 内建转换器,在兼容与性能之间平衡。
构建平台与框架底座
低层 JavaScript API、Plugin Hook 和多配置能力适合内部平台或上层框架封装自己的开发约定。
优点与注意事项
技术选型不仅要看能力,也要理解它带来的团队成本。
主要优点
Rspack 擅长的地方
- Rust 多线程实现能显著改善大型项目的启动、构建和增量编译
- Webpack 风格配置和 Loader 架构降低存量工程迁移门槛
- 兼容生态与内置 Rust 实现可以按阶段替换,而非一次重写工具链
- SWC、Lightning CSS、HTML、压缩和资源处理等常用能力具备高性能内建方案
- 代码拆分、Tree Shaking、HMR 和 Module Federation 能力完整
- Rspack 2 面向现代 ESM 与输出继续优化,同时保留 Webpack 兼容目标
- 可通过 Rsbuild 等 Rstack 工具获得更开箱即用的开发体验
需要注意
采用前应考虑的问题
多数配置和扩展可复用,但部分 Hook、Plugin、Loader 或输出细节仍有差异。迁移前必须查看兼容列表并运行完整测试。
当前主线要求 Node.js 20.19+ 或 22.12+,旧 CI 镜像、开发机和原生依赖需要先升级。
官方为常见 macOS、Linux 和 Windows 架构提供原生包;较少见平台可能需要 WASI Binding,并可能有性能或兼容差异。
Cache、CLI、Dev Middleware 和部分 Plugin 需要使用 Rspack 对应包或调整字段。应按迁移文档逐项映射。
@rspack/cli 提供类似命令,但不是 webpack-cli 的直接兼容包,参数、默认配置文件和部分行为存在差异。
直接使用 Rspack 需要维护入口、HTML、框架转换和环境配置。常规新应用通常使用 Rsbuild 更省力。
速度收益受模块规模、Loader、Plugin、缓存和存储环境影响;不要只依据公开 Benchmark 决定迁移。
Rspack 2 开始采用新的默认值和更现代的输出设计。升级 1.x 项目时应阅读迁移说明并比较最终资源。
构建更快不会消除共享依赖冲突、远程模块失败、版本协调和安全边界问题。
快速开始
下面使用官方 create-rspack 创建 React 项目,并展示一个采用内置 SWC 与 HtmlRspackPlugin 的最小配置。
bashnpm create rspack@latest my-rspack-app -- --template react
cd my-rspack-app
npm install
npm run devbashnpm install --save-dev @rspack/core @rspack/cli @rspack/dev-serverjson{
"private": true,
"type": "module",
"scripts": {
"dev": "rspack dev",
"build": "rspack build",
"preview": "rspack preview"
}
}javascriptimport { rspack } from "@rspack/core";
import { defineConfig } from "@rspack/cli";
export default defineConfig({
mode: "development",
entry: "./src/index.tsx",
output: {
filename: "[name].[contenthash].js",
clean: true,
},
module: {
rules: [
{
test: /.(?:js|jsx|ts|tsx)$/,
exclude: /node_modules/,
use: {
loader: "builtin:swc-loader",
options: {
detectSyntax: "auto",
jsc: {
transform: {
react: {
runtime: "automatic",
},
},
},
},
},
},
{
test: /.css$/,
type: "css",
},
{
test: /.(png|svg|jpg|jpeg)$/i,
type: "asset",
},
],
},
plugins: [
new rspack.HtmlRspackPlugin({
template: "./index.html",
}),
],
devServer: {
hot: true,
port: 3000,
},
});tsximport { createRoot } from "react-dom/client";
import "./style.css";
function App() {
const features = ["Rust", "SWC", "HMR", "Webpack compatibility"];
return (
<main>
<h1>Hello Rspack</h1>
<ul>
{features.map((feature) => (
<li key={feature}>{feature}</li>
))}
</ul>
</main>
);
}
createRoot(document.getElementById("root")!).render(<App />);bashnpm install --save-dev @rspack/core @rspack/cli @rspack/dev-server
npm remove webpack webpack-cli webpack-dev-server
# 将 webpack.config.js 重命名为 rspack.config.js
# 再逐项核对 Loader、Plugin、Cache 与输出兼容性bashnpm run build
npm run preview下一步:新项目如果不需要直接管理 Bundler 配置,优先评估 npm create rsbuild@latest;迁移 Webpack 时不要一次替换全部 Loader 和 Plugin,应先核对兼容清单,再用真实项目比较构建产物、HMR 和运行时行为。
类似项目
Webpack 是 Rspack 最直接的兼容与迁移对象;Vite 等工具代表不同的现代开发模型,上层 Rstack 工具列为外部参考。
Webpack
高度可配置的静态模块打包器,通过依赖图、Loader 与 Plugin 构建复杂的前端资源流水线。
查看项目Vite
新一代前端构建工具,提供快速开发服务器和优化构建。
查看项目Rolldown
使用 Rust 构建、兼容 Rollup API,并为 Vite 提供统一高性能打包核心的 JavaScript Bundler。
查看项目TypeScript
为 JavaScript 添加类型语法,提升大型项目的开发体验。
查看项目PostCSS
通过 JavaScript 插件解析、分析和转换 CSS 的工具平台。
查看项目Rsbuild
由 Rspack 驱动、提供合理默认配置和统一插件体验的高层 Web 构建工具。
访问官网esbuild
使用 Go 实现、以极快转换与打包速度著称的 JavaScript 构建工具。
访问官网Rspack vs Webpack
Rspack 与 Webpack 共享相近的依赖图、配置、Loader 和 Plugin 模型,但 Rspack 以 Rust 并行实现追求更高构建性能,并逐步采用现代化默认值。
| 比较维度 | Rspack | Webpack |
|---|---|---|
| 核心实现 | Rust 核心配合 TypeScript 接口 | JavaScript 实现 |
| 性能方向 | 多线程并行、内置 SWC 与 Lightning CSS | 成熟增量编译和 JavaScript 扩展生态 |
| 配置模型 | 现代化 Webpack API,大量字段保持兼容 | Webpack 原生配置与行为标准 |
| Loader | 兼容多数 Webpack Loader,并提供 builtin Loader | 拥有最完整、最成熟的 Loader 生态 |
| Plugin | 兼容大量 Hook,并提供 Rust 内置插件替代 | Plugin API 覆盖最完整,第三方兼容基准 |
| Module Federation | 支持 Federation,可承接相关迁移 | 内建且拥有更长期的生产实践 |
| 迁移风险 | 需核对不兼容 API、输出和原生平台支持 | 继续维护现有项目风险最低 |
| Node.js 要求 | 2.x 要求 20.19+ 或 22.12+ | Core 5.x 最低要求较低,但新 CLI 要求更高 |
| 更适合 | 受构建性能困扰、又依赖 Webpack 生态的大型项目 | 强调最大兼容性、稳定行为和完整扩展覆盖的项目 |
如果现有 Webpack 项目稳定、构建时间可接受,继续使用 Webpack 通常最稳妥;如果冷启动、HMR 或 CI 构建已明显影响效率,同时大量 Loader 和 Plugin 让迁移到其他模型成本过高,可以为一条真实构建链试点 Rspack。只有在功能测试、产物比较、性能数据和回滚方案都通过后,再扩大迁移范围。
资料核验
版本、维护信息与本页采用的官方资料来源。
本页依据 Rspack 官方快速开始、Webpack 迁移、CLI、Plugin API、Rspack 2.0 与 2.1 发布说明,以及 npm Registry 和官方源码仓库整理。Rspack 兼容状态和 Rstack 工具版本更新较快,迁移前应检查目标 Loader、Plugin 和框架的当前兼容清单。
官方仓库未归档,核验时最近可见的代码活动日期为 2026 年 7 月 29 日。该状态表示项目近期仍有公开维护活动,不代表固定发布频率或长期支持承诺。