For AI agents: the complete documentation index is available at https://rsbuild.rs/zh/llms.txt, the full documentation bundle is available at https://rsbuild.rs/zh/llms-full.txt, and this page is available as Markdown at https://rsbuild.rs/zh/config/mode.md.
close
  • 简体中文
  • 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
    export default {
      mode: 'production',
    };

    命令行

    当你使用 Rsbuild 的命令行时:

    • rsbuild 会将 NODE_ENV 和 mode 的默认值设置为 development。
    • rsbuild build 和 rsbuild preview 会将 NODE_ENV 和 mode 的默认值设置为 production。

    JavaScript API

    当你使用 Rsbuild 的 JavaScript API 时:

    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 前缀。