配置 Rsbuild
Rsbuild 提供了丰富的配置项,并为每个配置项预设了一个通用的默认值,它可以满足大部分使用场景。因此,在大多数情况下,你不需要声明任何 Rsbuild 配置,直接开箱使用即可。
如果你需要定制一些构建行为,那么可以使用这些配置项。
配置结构
Rsbuild 的配置结构如下所示:
你可以在 Config 总览 页面找到所有配置项的详细说明。
配置文件
当你使用 Rsbuild 的 CLI 命令时,或者在未指定 path 的情况下调用 loadConfig 时,Rsbuild 会自动读取当前项目根目录下的配置文件,并按以下顺序进行解析:
- rsbuild.config.ts
- rsbuild.config.js
- rsbuild.config.mts
- rsbuild.config.mjs
- rsbuild.config.cts
- rsbuild.config.cjs
如果同时存在多个配置文件,Rsbuild 会使用这个列表中第一个匹配到的文件。
我们推荐使用 rsbuild.config.ts,并从 @rsbuild/core 中导入 defineConfig 工具函数, 它提供了友好的 TypeScript 类型推导和自动补全,可以帮助你避免配置中的错误。
比如在 rsbuild.config.ts 中,你可以定义 Rsbuild 的 resolve.alias 配置:
如果 Node.js 在加载 rsbuild.config.ts 时出现 [MODULE_TYPELESS_PACKAGE_JSON] 警告,你可以在 package.json 中添加 "type": "module",或将文件重命名为 rsbuild.config.mts 来解决该警告。
如果你在开发一个非 TypeScript 项目,可以使用 .mjs 格式的配置文件:
指定配置文件
Rsbuild CLI 通过 --config 选项来指定配置文件,可以设置为相对路径或绝对路径。
例如,你需要在执行 build 命令时使用 rsbuild.prod.config.mjs 文件,可以在 package.json 中添加如下配置:
你也可以将 --config 选项缩写为 -c:
指定加载方式
Rsbuild 提供了三种配置文件加载方式:
-
auto(默认):优先使用 Node.js 原生 loader 来加载配置文件,失败时回退到使用 jiti 加载。 -
jiti:使用 jiti 来加载配置文件,提供 ESM 与 CommonJS 的互操作性,模块解析的行为与 Node.js 原生行为存在一定差异。 -
native:使用 Node.js 原生 loader 来加载配置文件,这可以保证模块解析的行为与 Node.js 原生行为一致,并且性能更好。这要求你使用的 JavaScript 运行时已经原生支持 TypeScript。例如,Node.js 从 v22.6.0 开始已经原生支持 TypeScript,你可以运行如下命令来使用 Node.js 原生 loader 来加载配置文件:
关于 Node.js 原生 loader
使用 Node.js 原生 loader 时,请注意以下限制:
-
导入 JSON 文件时,需要使用 import attributes:
-
导入 TypeScript 文件时,需要包含
.ts扩展名:
配置文件监听
使用 Rsbuild CLI 时,rsbuild dev 和 rsbuild build --watch 会自动监听已加载的配置文件及其导入依赖。当其中任一文件发生变化时,Rsbuild 会重新加载配置,并重启当前 dev server 或监听构建。
使用 JavaScript API 时,请将完整的 loadConfig 返回结果传入 createRsbuild,使 Rsbuild 可以追踪并自动监听这些文件。
rsbuild.startDevServer()、rsbuild.createDevServer() 和 rsbuild.build({ watch: true }) 会安装 restart watcher,普通构建和预览服务器则不会安装。被监听的文件发生变化时,Rsbuild 会调用 onRestart hook。默认情况下,Rsbuild 不会关闭或重启当前任务;你可以传入 restart 选项 来处理重启请求。
使用环境变量
在配置文件中,你可以使用 process.env.NODE_ENV 等 Node.js 环境变量,来动态写入不同的配置:
导出配置函数
Rsbuild 支持在配置文件中导出一个函数,你可以在函数中动态计算配置,并返回给 Rsbuild。
导出的配置函数必须提供一个返回值,如果你不需要返回任何配置,可以 return 一个空对象。
该函数接受以下入参:
env
- 类型:
string - 默认值:
process.env.NODE_ENV
当前运行的环境。
- 运行
rsbuild dev时,env 的默认值为development。 - 运行
rsbuild build或rsbuild preview时,env 的默认值为production。
envMode
- 类型:
string - 默认值:
process.env.NODE_ENV
CLI 参数 --env-mode 当前的值。
比如,当运行 rsbuild build --env-mode test 时,envMode 的值为 test。
command
- 类型:
string
当前运行的 CLI 命令,如 dev、build、preview。
导出异步函数
Rsbuild 也支持在配置文件中导出一个异步函数,你可以在函数中进行一些异步操作:
合并配置
你可以使用 @rsbuild/core 导出的 mergeRsbuildConfig 函数来合并多个配置。
调试配置
在执行构建时,你可以添加 DEBUG=rsbuild 环境变量来开启 Rsbuild 的调试模式。
在调试模式下,Rsbuild 会将内部最终生成的 Rsbuild 配置写入到产物目录下,便于开发者查看和调试。
打开生成的 /dist/.rsbuild/rsbuild.config.mjs 文件,即可查看 Rsbuild 配置的完整内容。
关于调试模式的完整介绍,请查看 开启调试模式 章节。

