Turbopack 与 Rspack
学习目标
- 理解 Rust 重写构建工具的动力(速度)
- 区分 Turbopack 与 Rspack 的定位差异
- 知道何时选择它们而非 webpack / Vite
为什么用 Rust 重写
webpack 的 JS 运行时在大项目增量构建上到达瓶颈。Rust 工具链(基于 SWC / NAPI)在解析、转译、增量缓存上数量级提速,催生了两款工具。
Turbopack
Turbopack 是 Next.js 官方用 Rust + Turborepo 引擎写的打包器,原生服务于 App Router:
js
// next dev --turbo
export default { experimental: { turbo: {} } };特点是按需编译图(只构建被请求的路由与模块),增量 HMR 极快。当前更适合 Next.js 项目,通用框架集成仍在演进。
Rspack
Rspack 由字节开源,目标是兼容 webpack 配置与 loader 生态,让存量 webpack 项目以最小改造获得 Rust 速度:
js
// rspack.config.js 几乎与 webpack.config.js 同形
module.exports = { context: __dirname, entry: './src/index.js', builtins: { react: { runtime: 'automatic' } } };它适合「不想重写配置、只想提速」的大型 webpack 工程。
对比
| 工具 | 定位 | 配置兼容 | 适用 |
|---|---|---|---|
| Vite | 通用、开发体验 | 全新配置 | 新项目 |
| Turbopack | Next.js 原生 | 框架内 | Next.js App Router |
| Rspack | webpack 平替 | 兼容 webpack | 存量大型工程 |
总结
新一代构建工具用 Rust 解决速度瓶颈:Turbopack 绑定 Next.js 体验,Rspack 兼容 webpack 生态。选型的本质是「新项目 vs 存量工程」。