Rspack 入门:Webpack 兼容的 Rust 极速打包器
Rspack 用 Rust 重写 Webpack:强调构建或检查效率,具体收益需在项目中测量且生态兼容。本文讲解项目搭建、开发模式、资源处理与配置定制。
Rspack 是字节跳动开源的 Rust 打包器:npm create rspack@latest 脚手架开箱,配置 API 与 Webpack 几乎一致(webpack 项目的 config 大部分直接可用)。强调构建或检查效率,具体收益需在项目中测量,是 Webpack 存量的升级路径与新项目的性能之选。
Rspack 的定位
Webpack 的功能广度无人能及,但 JS 实现的性能天花板明显。Rspack 的答案:Rust 重写核心,保持 Webpack 的 API 与生态兼容——babel-loader、css-loader、主流 plugin 直接可用。
快速开始
npm create rspack@latest my-app
cd my-app && npm install
npm run dev # 开发服务器
npm run build # 生产构建
模板可选 React/Vue/TS 等——开箱即用程度对齐 Vite。
开发模式
开发服务器热更新开箱即用。Rspack 的增量编译是 Rust 多核实现——大项目的保存-看到效果延迟稳定在毫秒级。
资源处理
// rspack.config.mjs
export default {
module: {
rules: [
{ test: /\.css$/, type: 'css' }, // 内置 CSS
{ test: /\.(png|svg)$/, type: 'asset/resource' }, // 内置资源模块
{ test: /\.tsx?$/, use: 'builtin:swc-loader' }, // 内置 SWC 转译
],
},
};
builtin: 前缀的内置能力(SWC 转译、CSS、资源)是性能关键——不经 JS loader 的开销。
配置定制
- 入口/输出/别名:与 Webpack 同构(entry/output/resolve.alias);
- 代码分割:optimization.splitChunks 语义一致;
- 插件:HtmlRspackPlugin 内置;progress-bar、mini-css-extract 等主流 Webpack 插件可直接用。
与 Webpack/Vite 的关系
- 从 Webpack 迁移:config 大部分平移,loader 逐个验证,收益是构建时间数量级下降;
- 与 Vite 选型:Vite 开发期免打包模型更激进;Rspack 的 Webpack 兼容对存量项目更友好。新项目两者都是顶级选择。
常见问题(FAQ)
Q:Rspack 生产稳定吗?
字节跳动内部大规模使用(抖音等),开源后社区采用广泛——生产就绪。
Q:Webpack 插件兼容率多少?
主流插件大多可用;依赖 Webpack 内部 API 的插件需替代。官方维护兼容性列表,迁移前先核对。
Q:Rsbuild 是什么?
基于 Rspack 的上层构建工具(更简洁的 API,对标 Vite 体验)——新项目用 Rsbuild 比裸 Rspack 配置更省。
参考文档
本文依据公开文档整理,示例需按项目依赖版本验证;不将文档中的性能描述视为本项目实测结果。