> 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.

# Extends

用于从其他文件或包中扩展配置。这允许你创建一个基础配置，并针对不同的环境或用例进行扩展。

- **类型：** `string | string[]`
- **默认值：** `undefined`

:::info
该选项仅在 [@rspack/cli](https://rspack.rs/zh/api/cli.md) 中有效。

如果你在使用 JavaScript API，或是其他基于 Rspack 的工具，`extends` 将不会生效，请使用 [rspack-merge](https://rspack.rs/zh/config.md#rspack-merge) 代替。
:::

## 基本用法

你可以通过在 `extends` 属性中指定文件路径来扩展另一个配置文件。路径可以是绝对路径，或是相对于配置文件的相对路径：


**ESM**

```js title="rspack.config.mjs"
export default {
  extends: './base.rspack.config.mjs',
  // 覆盖或添加到基础配置
  output: {
    filename: '[name].bundle.js',
  },
};
```


**CJS**

```js title="rspack.config.cjs"
module.exports = {
  extends: './base.rspack.config.cjs',
  // 覆盖或添加到基础配置
  output: {
    filename: '[name].bundle.js',
  },
};
```


:::tip
当使用相对路径时，它们是相对于包含 `extends` 属性的配置文件进行解析的。
:::

## 多个配置

- **类型：** `string[]`
- **默认值：** `undefined`

你可以通过提供一个路径数组来扩展多个配置。配置会从右到左依次合并，意味着最右边的配置会覆盖并合并到左边的配置中，以此类推。

```js title="rspack.config.mjs"
export default {
  extends: ['./base.rspack.config.mjs', './dev.rspack.config.mjs'],
  // 额外的配置选项
  plugins: [
    // 添加更多插件
  ],
};
```

:::info 合并行为
`@rspack/cli` 内部使用 [rspack-merge](https://github.com/rstackjs/rspack-merge) 来合并配置，其默认合并规则如下：

- 简单值会被覆盖
- 数组会被连接
- 对象会被深度合并(deep merged)

:::

## Node 模块

- **类型：** `string`
- **默认值：** `undefined`

你也可以从安装在 node\_modules 中的包扩展配置。该包应该导出一个有效的 Rspack 配置：

```js title="rspack.config.mjs"
export default {
  extends: 'some-rspack-config-package',
  // 覆盖或添加到包的配置
};
```

## 嵌套扩展

配置可以有自己的 `extends` 属性，允许嵌套配置继承。解析过程是递归执行的：

```js title="base.rspack.config.mjs"
export default {
  extends: './core.rspack.config.mjs',
  // 基础配置选项
};
```

```js title="rspack.config.mjs"
export default {
  extends: './base.rspack.config.mjs',
  // 环境特定的配置选项
};
```


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

