close
logologo
指南
配置
插件
API
社区
版本
更新日志
Rsbuild 0.x 文档
English
简体中文
指南
配置
插件
API
社区
更新日志
Rsbuild 0.x 文档
English
简体中文
logologo

开始

介绍
快速上手
功能导航
名词解释

框架

React
Vue
Preact
Svelte
Solid

基础

命令行工具
开发服务器
构建产物
静态资源
HTML
JSON
Wasm
TypeScript
Web Workers
部署静态站点
升级 Rsbuild

配置

配置 Rspack
配置 Rsbuild
配置 SWC

样式

CSS
CSS Modules
CSS-in-JS
Tailwind CSS v4
Tailwind CSS v3
UnoCSS

进阶

路径别名
环境变量
模块热更新
浏览器范围
浏览器兼容性
模块联邦
多环境构建
服务端渲染(SSR)
测试

优化

代码拆分
产物体积优化
提升构建性能
静态资源内联

迁移

从 Rsbuild 0.x 迁移
webpack
Create React App
Vue CLI
Vite
Vite 插件
Modern.js Builder

调试

开启调试模式
构建性能分析
使用 Rsdoctor

常见问题

通用类问题
功能类问题
异常类问题
热更新问题
📝 在 GitHub 上编辑此页
上一页从 Rsbuild 0.x 迁移
下一页Create React App

#webpack

本章节介绍如何将使用 webpack 的项目迁移到 Rsbuild。

#安装依赖

首先你需要把 webpack 相关的 npm 依赖替换为 Rsbuild 的依赖。

  • 移除 webpack 的依赖:
npm
yarn
pnpm
bun
npm remove webpack webpack-cli webpack-dev-server
  • 安装 Rsbuild 的依赖:
npm
yarn
pnpm
bun
npm add @rsbuild/core -D

#更新 npm scripts

下一步,你需要把 package.json 中的 npm scripts 更新为 Rsbuild 的 CLI 命令。

package.json
{
  "scripts": {
    "serve": "webpack serve -c webpack.config.js",
    "build": "webpack build -c webpack.config.js",
    "dev": "rsbuild dev",
    "build": "rsbuild build"
  }
}

#创建配置文件

在 package.json 的同级目录下创建 Rsbuild 的配置文件 rsbuild.config.ts,并添加以下内容:

rsbuild.config.ts
import { defineConfig } from '@rsbuild/core';

export default defineConfig({
  plugins: [],
});

查看 配置 Rsbuild 了解更多。

#配置迁移

在一个 webpack 项目中,可能已经包含了一些复杂的 webpack.config.js 配置文件。

而迁移到 Rsbuild 后,大部分 webpack 配置已经被 Rsbuild 内置,不再需要手动配置,比如 output、resolve、module.rules 等。

对于少部分需要迁移的 webpack 配置,你可以选择以下方案:

  • 使用 tools.rspack 选项(Rspack 和 webpack 的配置基本上等价)。
rsbuild.config.ts
export default {
  tools: {
    rspack: {
      plugins: [new SomeWebpackPlugin()],
    },
  },
};
  • 使用 Rsbuild 封装的配置项,比如 css-loader 的选项可以通过 tools.cssLoader 设置。

参考 配置 Rspack 了解更多。

#构建入口

webpack 使用 entry 字段来设置构建入口,在 Rsbuild 中你可以使用 source.entry 来设置。

rsbuild.config.ts
export default {
  source: {
    entry: {
      foo: './src/pages/foo/index.ts',
      bar: './src/pages/bar/index.ts',
    },
  },
};

#清理配置

由于 Rsbuild 内置了一些常见的 loader 和 plugin,所以你可以移除以下依赖和相关的配置,这会显著提升项目的依赖安装速度。

  • css-loader
  • babel-loader
  • style-loader
  • postcss-loader
  • html-webpack-plugin
  • mini-css-extract-plugin
  • autoprefixer
  • @babel/core
  • @babel/preset-env
  • @babel/preset-typescript
  • @babel/runtime
  • ...
TIP

以上仅列出了一些可以被移除的常见依赖。在一个真实的 webpack 项目中,可能还存在很多其他依赖,请酌情处理。

#使用插件

Rsbuild 提供了丰富的插件,对常见的使用场景提供开箱即用的支持,你可以参考插件列表文档来了解这些插件。

我们以 React 项目为例,来介绍如何接入 Rsbuild 插件。首先,你可以移除一些 React 相关的构建依赖,它们已经被 @rsbuild/plugin-react 插件内置,比如:

  • react-refresh
  • @babel/preset-react
  • @pmmmwh/react-refresh-webpack-plugin

然后参考 React 插件 文档,注册并使用即可:

rsbuild.config.ts
import { defineConfig } from '@rsbuild/core';
import { pluginReact } from '@rsbuild/plugin-react'; 

export default defineConfig({
  plugins: [pluginReact()],
});

大部分常见的 webpack loaders 和 plugins 都能在 Rsbuild 中继续使用,但我们推荐你优先使用 Rsbuild 提供的插件,这能够进一步简化你的配置。下面是它们的映射关系:

webpackRsbuild
@babel/preset-reactReact 插件
vue-loaderVue 插件 或 Vue 2 插件
svelte-loaderSvelte 插件
babel-preset-solidSolid 插件
babel-loaderBabel 插件
sass-loaderSass 插件
less-loaderLess 插件
stylus-loaderStylus 插件
mdx-loaderMDX 插件
pug-loaderPug 插件
yaml-loaderYaml 插件
toml-loaderTOML 插件
@svgr/webpackSVGR 插件
fork-ts-checker-webpack-plugin@rsbuild/plugin-type-check
node-polyfill-webpack-pluginNode Polyfill 插件
@vue/babel-plugin-jsxVue JSX 插件
@vue/babel-preset-jsxVue 2 JSX 插件
eslint-webpack-pluginESLint 插件
babel-plugin-styled-componentsStyled Components 插件

#配置 Dev server

Rsbuild 不支持使用 Rspack 的 devServer 配置项,请参考 Rspack Dev Server 进行替换。

#Babel 迁移

Rsbuild 默认使用 SWC 编译代码,所以大部分常用的 Babel 插件不再需要,下面是一些常见的 Babel 插件的迁移示例。

#@babel/preset-env

@babel/preset-env 不再需要,Rsbuild 会自动根据 browserslist 配置进行代码降级。

注意 Rsbuild 默认不会注入 polyfill,你可以参考 Polyfill 方案 了解如何注入。

#@babel/preset-typescript

@babel/preset-typescript 不再需要,因为 Rsbuild 开启 SWC 的 TypeScript 转换。

#@babel/preset-react

@babel/preset-react 不再需要,替换为 @rsbuild/plugin-react 即可。

#@babel/plugin-transform-runtime

@babel/plugin-transform-runtime 不再需要,Rsbuild 中内置了等价的 @swc/helpers 作为 runtime helpers。

#babel-plugin-import

babel-plugin-import 插件可以替换为 Rsbuild 的 source.transformImport 配置项。

  • Babel 配置:
babel.config.js
module.exports = {
  plugins: [
    [
      'import',
      { libraryName: 'some-library', libraryDirectory: 'es', style: true },
    ],
  ],
};
  • Rsbuild 配置:
rsbuild.config.ts
export default {
  source: {
    transformImport: [
      { libraryName: 'some-library', libraryDirectory: 'es', style: true },
    ],
  },
};

#验证结果

完成以上步骤后,你已经完成了从 webpack 到 Rsbuild 的基本迁移,此时可以执行 npm run dev 命令来尝试启动开发服务器。

如果在构建过程中发现问题,请根据错误日志进行调试,或者查看 webpack 配置,检查是否有一些必须的配置未被迁移到 Rsbuild。

#内容补充

当前文档只涵盖了迁移过程的部分事项,如果你发现有合适的内容可以补充,欢迎通过 pull request 来完善文档 🤝。

Rsbuild 的文档位于 rsbuild/website 目录。