> For AI agents: the complete documentation index is available at https://rspack.rs/zh/llms.txt, the full documentation bundle is available at https://rspack.rs/zh/llms-full.txt.

# Mode


- 类型： `'production' | 'development' | 'none'`


模式：该选项用于设置 Rspack 的构建模式，以启用对应模式下的默认优化策略。

## 默认值

如果未显式指定 `mode`：

- 使用 `@rspack/cli` 时，`rspack dev` 和 `rspack serve` 默认是 `'development'`，`rspack build` 默认是 `'production'`。
- 使用 JavaScript API 时，`mode` 默认为 `'production'`。

## 用法

你可以在 Rspack 配置中直接设置 mode:

```js title="rspack.config.mjs"
export default {
  mode: 'production',
};
```

在实际场景中，你可以根据 `process.env.NODE_ENV` 来动态设置 mode:

```js title="rspack.config.mjs"
const isProduction = process.env.NODE_ENV === 'production';

export default {
  mode: isProduction ? 'production' : 'development',
};
```

除此之外，你也可以在 Rspack 命令行中通过 `--mode` 选项来设置 mode:

```bash
rspack --mode=production
```

:::info
命令行中的 `--mode` 选项优先级高于 Rspack 配置中的 `mode`。
:::

## 可选值

`mode` 有以下可选值：

### production

在 production 模式下，Rspack 会自动启用以下优化策略：

- 将 [optimization.nodeEnv](https://rspack.rs/zh/config/optimization.md#optimizationnodeenv) 的默认值设置为 `'production'`，从而把代码中的 `process.env.NODE_ENV` 替换为 `'production'`。
- 将 [optimization.minimize](https://rspack.rs/zh/config/optimization.md#optimizationminimize) 的默认值设置为 `true`，并默认启用 JavaScript 和 CSS 压缩器。
- 将 [optimization.concatenateModules](https://rspack.rs/zh/config/optimization.md#optimizationconcatenatemodules) 的默认值设置为 `true`，以启用模块串联（scope hoisting）。
- 将 [optimization.sideEffects](https://rspack.rs/zh/config/optimization.md#optimizationsideeffects) 的默认值设置为 `true`，结合包的 `sideEffects` 信息跳过无副作用模块。
- 将 [optimization.usedExports](https://rspack.rs/zh/config/optimization.md#optimizationusedexports)、[optimization.mangleExports](https://rspack.rs/zh/config/optimization.md#optimizationmangleexports) 和 [optimization.innerGraph](https://rspack.rs/zh/config/optimization.md#optimizationinnergraph) 的默认值设置为 `true`，以增强 tree shaking 和导出压缩。
- 将 [optimization.moduleIds](https://rspack.rs/zh/config/optimization.md#optimizationmoduleids) 和 [optimization.chunkIds](https://rspack.rs/zh/config/optimization.md#optimizationchunkids) 的默认值设置为 `'deterministic'`，提升长期缓存稳定性。
- 将 [optimization.realContentHash](https://rspack.rs/zh/config/optimization.md#optimizationrealcontenthash) 的默认值设置为 `true`。

### development

在 development 模式下，Rspack 会自动启用以下优化策略：

- 将 [optimization.nodeEnv](https://rspack.rs/zh/config/optimization.md#optimizationnodeenv) 的默认值设置为 `'development'`，从而把代码中的 `process.env.NODE_ENV` 替换为 `'development'`。
- 将 [devtool](https://rspack.rs/zh/config/devtool.md) 的默认值设置为 `'cheap-module-source-map'`，便于调试。
- 将 [cache](https://rspack.rs/zh/config/cache.md) 的默认值设置为 `true` 以启用内存缓存，提升开发构建速度。
- 将 [optimization.moduleIds](https://rspack.rs/zh/config/optimization.md#optimizationmoduleids) 和 [optimization.chunkIds](https://rspack.rs/zh/config/optimization.md#optimizationchunkids) 的默认值设置为 `'named'`，生成更易读的模块和 chunk 名称。
- 将 [optimization.emitOnErrors](https://rspack.rs/zh/config/optimization.md#optimizationemitonerrors) 的默认值设置为 `true`，即使存在构建错误也保留输出结果，方便本地调试。

### none

当 `mode` 被设置为 `'none'` 时，Rspack 不会启用任何默认优化策略。


本页改编自 [webpack 文档](https://webpack.js.org/configuration/mode/)，遵循 [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/)，且已作修改。

