mode
- 类型:
'production' | 'development' | 'none'
指定 Rsbuild 构建的模式,各个模式默认的行为和优化不同,比如 production 模式默认会压缩代码。
Rsbuild mode 的值也会传递给 Rspack 的 mode 配置。
Tip
mode 的值不会影响 .env 文件的加载结果,因为 .env 文件早于 Rsbuild 的配置文件被解析。
Rsbuild CLI 支持使用 --env-mode 选项来指定 env 模式,详见 "Env 模式"。
默认值
mode 的默认值取决于 process.env.NODE_ENV 环境变量:
- 如果
NODE_ENV为production,则默认值为production。 - 如果
NODE_ENV为development,则默认值为development。 - 如果
NODE_ENV为其他值,则默认值为none。
显式设置的 mode 会优先用于确定构建模式,但不会修改 Node.js 进程中的 process.env.NODE_ENV。
rsbuild.config.ts
命令行
当你使用 Rsbuild 的命令行时:
rsbuild会将NODE_ENV和mode的默认值设置为development。rsbuild build和rsbuild preview会将NODE_ENV和mode的默认值设置为production。
JavaScript API
当你使用 Rsbuild 的 JavaScript API 时:
- rsbuild.startDevServer 和 rsbuild.createDevServer 会将
NODE_ENV和mode的默认值设置为development。 - rsbuild.build 和 rsbuild.preview 会将
NODE_ENV和mode的默认值设置为production。
Development 模式
设置 mode: 'development' 后,Rsbuild 的默认行为如下,可通过配置调整:
- 为 web 目标运行开发服务器且启用
dev.hmr时,注册 HotModuleReplacementPlugin。 - 生成 JavaScript 的 source map,不生成 CSS 的 source map,详见 output.sourceMap。
- 源代码中的
process.env.NODE_ENV会被替换为'development'。 - 源代码中的
import.meta.env.MODE会被替换为'development'。 - 源代码中的
import.meta.env.DEV会被替换为true。 - 源代码中的
import.meta.env.PROD会被替换为false。 - 使用 dev.assetPrefix 的值作为静态资源的 URL 前缀。
Production 模式
设置 mode: 'production' 后,Rsbuild 的默认行为如下,可通过配置调整:
- 对 web 和 web-worker 目标开启 JavaScript 代码压缩,注册 SwcJsMinimizerRspackPlugin。
- 对 web 和 web-worker 目标开启 CSS 代码压缩,注册 LightningCssMinimizerRspackPlugin。
- 生成的 JavaScript 和 CSS 文件名会带有 hash 后缀,但 Node.js 目标的 JavaScript 文件除外,详见 output.filenameHash。
- 生成的 CSS Modules 类名更简短,详见 cssModules.localIdentName。
- 不生成 JavaScript 和 CSS 的 source map,详见 output.sourceMap。
- 源代码中的
process.env.NODE_ENV会被替换为'production'。 - 源代码中的
import.meta.env.MODE会被替换为'production'。 - 源代码中的
import.meta.env.DEV会被替换为false。 - 源代码中的
import.meta.env.PROD会被替换为true。 - 使用 output.assetPrefix 的值作为静态资源的 URL 前缀。
None 模式
当 mode 的值为 none 时:
- 默认不开启生产模式的优化,但仍可通过显式配置开启代码压缩等功能。
- 源代码中的
process.env.NODE_ENV不会被替换。 - 源代码中的
import.meta.env.MODE会被替换为'none'。 - 源代码中的
import.meta.env.DEV会被替换为false。 - 源代码中的
import.meta.env.PROD会被替换为false。 - 使用 output.assetPrefix 的值作为静态资源的 URL 前缀。

