Rspack
Rspack 是一个 Rust 实现的 bundler,设计上和 Webpack 生态关系很深,但目标是把性能和现代化体验往前拉一大截。
Rspack 和 Rsbuild 的关系
Rspack:更底层的 bundlerRsbuild:更面向项目的构建方案
把两者放在一起看会更容易理解。很多团队最终直接接触的是 Rsbuild,而不是裸用 Rspack。
一个最常见的配置形态
module.exports = {
entry: './src/index.tsx',
output: {
path: __dirname + '/dist',
filename: '[name].[contenthash].js',
clean: true,
},
module: {
rules: [
{
test: /\.tsx?$/,
use: 'builtin:swc-loader',
exclude: /node_modules/,
},
],
},
}
一个更进阶的配置参考
const path = require('path')
const { HtmlRspackPlugin } = require('@rspack/core')
module.exports = {
mode: 'production',
entry: {
main: './src/main.tsx',
},
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'js/[name].[contenthash:8].js',
publicPath: '/',
clean: true,
},
resolve: {
alias: {
'@': path.resolve(__dirname, 'src'),
},
extensions: ['.ts', '.tsx', '.js'],
},
module: {
rules: [
{
test: /\.[jt]sx?$/,
use: 'builtin:swc-loader',
exclude: /node_modules/,
},
{
test: /\.css$/,
type: 'css',
},
{
test: /\.(png|jpe?g|gif|svg)$/i,
type: 'asset',
},
],
},
plugins: [
new HtmlRspackPlugin({
template: './public/index.html',
}),
],
optimization: {
splitChunks: {
chunks: 'all',
},
},
}
为什么它值得单独学
Rspack 代表的是现代前端构建里非常明确的一条路线:保留成熟 bundler 生态的组织方式,同时用更高性能的底层重新实现。
前端集成时最值得关注的点
1. 历史 Webpack 项目迁移
这一类项目往往是最自然的候选:
- loader / plugin 组织方式熟悉
- 构建心智延续性强
- 迁移成本通常比直接改到另一套工具更可控
2. React 或后台系统项目
如果项目本来就是重工程、重约定、重构建定制,Rspack 路线通常会比“从头换一整套轻量工具”更自然。
3. 与 SWC 的结合
Rspack 常见的一条路线就是把编译层和 bundler 层都往更快的底层能力上收。
使用时的现实判断
如果目标是“今天就做项目”,多数团队会更优先接触 Rsbuild。如果目标是“理解底层 bundler 怎么组织、或者迁移复杂 Webpack 工程”,Rspack 更值得直接看。