配置 Rsbuild

Rsbuild 提供了丰富的配置项,并为每个配置项预设了一个通用的默认值,它可以满足大部分使用场景。因此,在大多数情况下,你不需要声明任何 Rsbuild 配置,直接开箱使用即可。

如果你需要定制一些构建行为,那么可以使用这些配置项。

配置结构

Rsbuild 的配置结构如下所示:

rsbuild.config.mjs

  1. export default {
  2. plugins: [
  3. // 配置 Rsbuild 插件
  4. ],
  5. dev: {
  6. // 与本地开发有关的选项
  7. },
  8. html: {
  9. // 与 HTML 生成有关的选项
  10. },
  11. tools: {
  12. // 与底层工具有关的选项
  13. },
  14. output: {
  15. // 与构建产物有关的选项
  16. },
  17. source: {
  18. // 与源代码解析、编译方式相关的选项
  19. },
  20. server: {
  21. // 与 Rsbuild 服务器有关的选项
  22. // 在本地开发和预览时都会生效
  23. },
  24. security: {
  25. // 与 Web 安全有关的选项
  26. },
  27. performance: {
  28. // 与构建性能、运行时性能有关的选项
  29. },
  30. moduleFederation: {
  31. // 与模块联邦有关的选项
  32. },
  33. environments: {
  34. // 为每个环境定义不同的 Rsbuild 配置
  35. },
  36. };

你可以在 Config 总览 页面找到所有配置项的详细说明。

使用配置

当你使用 Rsbuild 的 CLI 命令时,Rsbuild 会自动读取当前项目根目录下的配置文件,按照以下顺序进行解析:

  • rsbuild.config.mjs
  • rsbuild.config.ts
  • rsbuild.config.js
  • rsbuild.config.cjs
  • rsbuild.config.mts
  • rsbuild.config.cts

我们推荐使用 .mjs.ts 格式的配置文件,并从 @rsbuild/core 中导入 defineConfig 工具函数, 它提供了友好的 TypeScript 类型推导和自动补全,可以帮助你避免配置中的错误。

比如在 rsbuild.config.ts 中,你可以定义 Rsbuild 的 source.alias 配置:

rsbuild.config.ts

  1. import { defineConfig } from '@rsbuild/core';
  2. export default defineConfig({
  3. source: {
  4. alias: {
  5. '@common': './src/common',
  6. },
  7. },
  8. });

如果你在开发一个非 TypeScript 项目,可以使用 .mjs 格式的配置文件:

rsbuild.config.mjs

  1. import { defineConfig } from '@rsbuild/core';
  2. export default defineConfig({
  3. source: {
  4. alias: (opts) => {
  5. opts['@common'] = './src/common';
  6. },
  7. },
  8. });

TIP

当你使用 .ts, .mts.cts 后缀时,Rsbuild 会使用 jiti 来加载配置文件,提供 ESM 与 CommonJS 的互操作性,模块解析的行为与 Node.js 原生行为存在一定差异。

指定配置文件

Rsbuild CLI 通过 --config 选项来指定配置文件,可以设置为相对路径或绝对路径。

例如,你需要在执行 build 命令时使用 rsbuild.prod.config.mjs 文件,可以在 package.json 中添加如下配置:

package.json

  1. {
  2. "scripts": {
  3. "build": "rsbuild build --config rsbuild.prod.config.mjs"
  4. }
  5. }

你也可以将 --config 选项缩写为 -c

  1. rsbuild build -c rsbuild.prod.config.mjs

使用环境变量

在配置文件中,你可以使用 process.env.NODE_ENV 等 Node.js 环境变量,来动态写入不同的配置:

rsbuild.config.ts

  1. import { defineConfig } from '@rsbuild/core';
  2. export default defineConfig({
  3. source: {
  4. alias: {
  5. '@request':
  6. process.env.NODE_ENV === 'development'
  7. ? './src/request.dev.js'
  8. : './src/request.prod.js',
  9. },
  10. },
  11. });

导出配置函数

Rsbuild 支持在配置文件中导出一个函数,你可以在函数中动态计算配置,并返回给 Rsbuild。

rsbuild.config.js

  1. import { defineConfig } from '@rsbuild/core';
  2. export default defineConfig(({ env, command, envMode }) => ({
  3. source: {
  4. alias: {
  5. '@foo': env === 'development' ? './src/foo.dev.ts' : './src/foo.prod.ts',
  6. },
  7. },
  8. }));

TIP

导出的配置函数必须提供一个返回值,如果你不需要返回任何配置,可以 return 一个空对象。

该函数接受以下入参:

env

  • 类型: string
  • 默认值: process.env.NODE_ENV

当前运行的环境。

  • 运行 rsbuild dev 时,env 的默认值为 development
  • 运行 rsbuild buildrsbuild preview 时,env 的默认值为 production

envMode

  • 类型: string
  • 默认值: process.env.NODE_ENV

CLI 参数 --env-mode 当前的值。

比如,当运行 rsbuild build --env-mode test 时,envMode 的值为 test

command

  • 类型: string

当前运行的 CLI 命令,如 devbuildpreview

导出异步函数

Rsbuild 也支持在配置文件中导出一个异步函数,你可以在函数中进行一些异步操作:

rsbuild.config.js

  1. import { defineConfig } from '@rsbuild/core';
  2. export default defineConfig(async ({ env, command }) => {
  3. const result = await someAsyncFunction();
  4. return {
  5. html: {
  6. title: result,
  7. },
  8. };
  9. });

合并配置

你可以使用 @rsbuild/core 导出的 mergeRsbuildConfig 函数来合并多个配置。

rsbuild.config.ts

  1. import { defineConfig, mergeRsbuildConfig } from '@rsbuild/core';
  2. const config1 = defineConfig({
  3. dev: { port: '3000' },
  4. });
  5. const config2 = defineConfig({
  6. dev: { port: '3001' },
  7. });
  8. // { dev: { port: '3001' }
  9. export default mergeRsbuildConfig(config1, config2);

调试配置

在执行构建时,你可以添加 DEBUG=rsbuild 环境变量来开启 Rsbuild 的调试模式。

  1. DEBUG=rsbuild pnpm dev

在调试模式下,Rsbuild 会将内部最终生成的 Rsbuild 配置写入到产物目录下,便于开发者查看和调试。

Inspect config succeed, open following files to view the content: - Rsbuild Config: /Project/demo/dist/.rsbuild/rsbuild.config.mjs - Rspack Config (web): /Project/demo/dist/.rsbuild/rspack.config.web.mjs

打开生成的 /dist/.rsbuild/rsbuild.config.mjs 文件,即可查看 Rsbuild 配置的完整内容。

关于调试模式的完整介绍,请查看 开启调试模式 章节。