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

# output

与构建产物相关的选项。

## output.assetPrefix [![output.assetPrefix](https://assets.rspack.rs/rsbuild/rsbuild-logo.svg)output.assetPrefix](https://rsbuild.rs/zh/config/output/asset-prefix)
使用该选项设置静态资源的 URL 前缀，比如设置为 CDN 地址。

在 Rslib 中，该选项的默认值由 [format](/zh/config/lib/format.md) 决定：

- 当 `format` 为 `cjs` 或 `esm` 时，默认值为 `"auto"`。
- 当 `format` 为 `mf`、`umd` 或 `iife` 时，默认值为 `"/"`。

当 `output.assetPrefix` 设置为 `"auto"` 时，Rslib 会自动将 [importMode](https://rspack.rs/zh/config/module-generator#assetimportmode) 设置为 `"preserve"`，以保留 JavaScript 文件中引用静态资源的 `import` 或 `require` 语句。同时，CSS 文件中的静态资源会保留相对引用路径，详情可以查看 [静态资源](/zh/guide/advanced/static-assets.md)。

当 `output.assetPrefix` 设置为具体的路径时，JavaScript 文件中引用静态资源的 `import` 或 `require` 语句会被替换为包含该前缀的 URL。同时，CSS 文件中的静态资源会被直接替换为带有该前缀的路径。

## output.autoExternal [![output.autoExternal](https://assets.rspack.rs/rsbuild/rsbuild-logo.svg)output.autoExternal](https://rsbuild.rs/zh/config/output/auto-external)
- **命令行：** `--auto-external` / `--no-auto-external`

是否自动对不同依赖类型的依赖进行外部化处理，不将其打包。该配置仅在 bundle 模式下生效，bundleless 模式下不会生效。

在 Rslib 中，该选项的默认值由 [format](/zh/config/lib/format.md) 决定：

- 当 `format` 为 `cjs` 或 `esm` 时，默认值为 `true`。
- 当 `format` 为 `umd`、`mf` 或 `iife` 时，默认值为 `false`。

设置为 `true` 时，`package.json` 中 `dependencies`、`optionalDependencies` 和 `peerDependencies` 字段下的依赖将被自动外部化。

关于第三方依赖处理的更多细节，请参考 [处理第三方依赖](/zh/guide/advanced/third-party-deps.md)。

## output.charset [![output.charset](https://assets.rspack.rs/rsbuild/rsbuild-logo.svg)output.charset](https://rsbuild.rs/zh/config/output/charset)
指定输出文件的 [字符编码](https://developer.mozilla.org/en-US/docs/Glossary/Character_encoding)，以确保它们在不同的环境中能够正确显示。

## output.cleanDistPath [![output.cleanDistPath](https://assets.rspack.rs/rsbuild/rsbuild-logo.svg)output.cleanDistPath](https://rsbuild.rs/zh/config/output/clean-dist-path)
- **命令行：** `--clean` / `--no-clean`

是否在构建开始前清理产物目录下的所有文件（产物目录默认为 `dist`）。

## output.copy [![output.copy](https://assets.rspack.rs/rsbuild/rsbuild-logo.svg)output.copy](https://rsbuild.rs/zh/config/output/copy)
将指定的文件或目录拷贝到构建输出目录中，基于 [rspack.CopyRspackPlugin](https://rspack.rs/zh/plugins/rspack/copy-rspack-plugin) 实现。

## output.cssModules [![output.cssModules](https://assets.rspack.rs/rsbuild/rsbuild-logo.svg)output.cssModules](https://rsbuild.rs/zh/config/output/css-modules)
用于自定义 CSS Modules 配置。

## output.dataUriLimit [![output.dataUriLimit](https://assets.rspack.rs/rsbuild/rsbuild-logo.svg)output.dataUriLimit](https://rsbuild.rs/zh/config/output/data-uri-limit)
设置图片、字体、媒体等静态资源被自动内联为 base64 的体积阈值。

在 [format](/zh/config/lib/format.md) 为 `cjs` 或 `esm` 时，Rslib 默认会将 `output.dataUriLimit` 设置为 `0`，不内联任何静态资源，以便于应用侧的构建工具处理和优化。

## output.distPath [![output.distPath](https://assets.rspack.rs/rsbuild/rsbuild-logo.svg)output.distPath](https://rsbuild.rs/zh/config/output/dist-path)
- **命令行：** `--dist-path <dir>`（例如 `--dist-path output`）

设置构建产物的输出目录，Rsbuild 会根据产物的类型输出到对应的子目录下。

Rslib 默认将 `output.distPath` 设置为：

```ts
const defaultDistPath = {
  root: 'dist',
  js: './',
  jsAsync: './',
  css: './',
  cssAsync: './',
  svg: 'static/svg',
  font: 'static/font',
  wasm: 'static/wasm',
  image: 'static/image',
  media: 'static/media',
  assets: 'static/assets',
};
```

其中，`wasm` 配置仅在 [lib.wasm.mode](/zh/config/lib/wasm.md#wasmmode) 为 `compile` 时生效，用于指定 `.wasm` 文件的输出目录。在 `preserve` 模式下，`.wasm` 文件会按源码相对路径输出。

## output.emitCss [![output.emitCss](https://assets.rspack.rs/rsbuild/rsbuild-logo.svg)output.emitCss](https://rsbuild.rs/zh/config/output/emit-css)
是否将 CSS 输出到产物中。

## output.externals [![output.externals](https://assets.rspack.rs/rsbuild/rsbuild-logo.svg)output.externals](https://rsbuild.rs/zh/config/output/externals)
- **命令行：** `--externals <pkg>`（可重复，例如 `--externals react --externals react-dom`）

在构建时，防止将代码中某些 `import` 的依赖包打包到 bundle 中，而是在运行时再去从外部获取这些依赖。

在 bundle 模式下，Rslib 会根据 [output.autoExternal](#outputautoexternal) 自动将 `package.json` 中的依赖进行外部化处理，查看 [output.autoExternal](#outputautoexternal) 了解更多信息。

此外，Rslib 会根据产物格式设置 Rspack 的 [`externalsType`](https://rspack.rs/zh/config/externals#externalstype) 默认值：

- `esm`：[modern-module](https://rspack.rs/zh/config/externals#externalstypemodern-module)，静态 `import` 的 external 会被输出为 ESM import，动态 `import()` 会保持动态导入；CommonJS `require()` 的 external 在 Node-like [`output.target`](#outputtarget) 下会通过 `createRequire` 加载，在其他 target 下会保留裸 `require()` 调用。

:::warning
对于通过 `createRequire()` 加载的 external 模块，如果对应产物需要再次打包，消费方的打包器必须能够静态分析这种调用模式。Rspack 项目可开启 [`module.parser.javascript.createRequire`](https://rspack.rs/zh/config/module-parser#javascriptcreaterequire) 来支持该能力。
:::

- `cjs`：[commonjs-import](https://rspack.rs/zh/config/externals#externalstypecommonjs-import)。
- `umd`：[umd](https://rspack.rs/zh/config/externals#externalstype)。
- `mf` / `iife`：[global](https://rspack.rs/zh/config/externals#externalstypeglobal)。

:::note
需要注意的是，`output.externals` 与 [resolve.alias](/zh/config/rsbuild/resolve.md#resolvealias) 有所不同。请查看 [resolve.alias](/zh/config/rsbuild/resolve.md#resolvealias) 文档以了解更多信息。
:::

## output.filenameHash [![output.filenameHash](https://assets.rspack.rs/rsbuild/rsbuild-logo.svg)output.filenameHash](https://rsbuild.rs/zh/config/output/filename-hash)
在生产模式构建后，是否在产物的文件名中添加 hash 值。

对于 `esm`、`cjs`、`umd` 和 `iife` 格式，Rslib 默认将 `output.filenameHash` 设置为 `false`。对于 `mf` 格式，Rslib 保留 Rsbuild 的默认值，在生产模式下为产物的文件名添加 hash 值。

::: info 文件名中的 hash 值

可以将 `output.filenameHash` 设置为 `true`，在产物的文件名中添加 hash 值，或设置为 `false` 来禁用。

你也可以通过设置 `output.filename` 为不同类型的文件指定不同的名称。

:::

## output.filename [![output.filename](https://assets.rspack.rs/rsbuild/rsbuild-logo.svg)output.filename](https://rsbuild.rs/zh/config/output/filename)
设置构建产物的名称。

Rslib 默认会根据 [format](/zh/config/lib/format.md) 设置 `output.filename.js` 来修改 JavaScript 产物文件的扩展名，详情可查看 [autoExtension](/zh/config/lib/auto-extension.md)。

## output.injectStyles [![output.injectStyles](https://assets.rspack.rs/rsbuild/rsbuild-logo.svg)output.injectStyles](https://rsbuild.rs/zh/config/output/inject-styles)
是否将 CSS 样式插入到 DOM 中。

## output.inlineScripts [![output.inlineScripts](https://assets.rspack.rs/rsbuild/rsbuild-logo.svg)output.inlineScripts](https://rsbuild.rs/zh/config/output/inline-scripts)
用来控制是否用 `<script>` 标签将产物中的 script 文件（.js 文件）inline 到 HTML 中。

## output.inlineStyles [![output.inlineStyles](https://assets.rspack.rs/rsbuild/rsbuild-logo.svg)output.inlineStyles](https://rsbuild.rs/zh/config/output/inline-styles)
用来控制是否用 `<style>` 标签将产物中的 style 文件（.css 文件）inline 到 HTML 中。

## output.legalComments [![output.legalComments](https://assets.rspack.rs/rsbuild/rsbuild-logo.svg)output.legalComments](https://rsbuild.rs/zh/config/output/legal-comments)
配置 legal comment 的处理方式。

## output.manifest [![output.manifest](https://assets.rspack.rs/rsbuild/rsbuild-logo.svg)output.manifest](https://rsbuild.rs/zh/config/output/manifest)
是否生成 manifest 文件，该文件包含所有构建产物的信息、以及[入口模块](https://rsbuild.rs/zh/config/source/entry)与构建产物间的映射关系。

## output.minify [![output.minify](https://assets.rspack.rs/rsbuild/rsbuild-logo.svg)output.minify](https://rsbuild.rs/zh/config/output/minify)
- **命令行：** `--minify` / `--no-minify`

用于设置是否开启代码压缩，以及配置压缩工具的选项。

在未指定 `output.minify` 时，Rslib 会使用一个合理的默认值。

- 当 format 为 `esm` 或 `cjs` 时，仅会执行死代码消除和未使用代码消除，默认值为：

```ts
export default defineConfig({
  output: {
    minify: {
      js: true,
      css: false,
      jsOptions: {
        minimizerOptions: {
          mangle: false,
          minify: false,
          compress: {
            defaults: false,
            directives: false,
            unused: true,
            dead_code: true,
            toplevel: true,
          },
          format: {
            comments: 'some',
            preserve_annotations: true,
          },
        },
      },
    },
  },
});
```

- 当 format 为 `umd` 时，默认值同上，仅会执行死代码消除和未使用代码消除，这通常用于生成开发环境的 UMD 产物。如果需要生成体积尽可能小的生产环境的 UMD 产物，可以将 `output.minify` 设置为 true：

```ts
export default defineConfig({
  output: {
    minify: true,
  },
});
```

- 当 format 为 `iife` 时，Rslib 默认也仅执行死代码消除和未使用代码消除，并将 `minimizerOptions.module` 设置为 `true`。

- 当 format 为 `mf` 时，由于 MF 资源通过网络加载，这意味着它们不会被应用项目压缩。因此，需要在 Rslib 中对它们进行压缩。默认值为：

```ts
export default defineConfig({
  output: {
    minify: {
      js: true,
      css: false,
      jsOptions: {
        minimizerOptions: {
          mangle: false,
          // 启用压缩
          minify: true,
          compress: {
            defaults: false,
            directives: false,
            unused: true,
            dead_code: true,
            // 避免 remoteEntry 的全局变量被 tree-shaking
            toplevel: false,
          },
          format: {
            comments: 'some',
            preserve_annotations: true,
          },
        },
      },
    },
  },
});
```

::: note

需要注意的是，你配置的 `output.minify` 选项会完全覆盖上述默认配置。

:::

## output.overrideBrowserslist [![output.overrideBrowserslist](https://assets.rspack.rs/rsbuild/rsbuild-logo.svg)output.overrideBrowserslist](https://rsbuild.rs/zh/config/output/override-browserslist)
指定项目兼容的目标浏览器范围。

Rslib 默认会根据 [syntax](/zh/config/lib/syntax.md) 生成 `output.overrideBrowserslist`，查看 [ESX\_TO\_BROWSERSLIST](https://github.com/web-infra-dev/rslib/blob/8d65f3728d60254bcf1a8e24d72902ad79dae959/packages/core/src/utils/syntax.ts#L42-L153) 获取映射值。

## output.polyfill [![output.polyfill](https://assets.rspack.rs/rsbuild/rsbuild-logo.svg)output.polyfill](https://rsbuild.rs/zh/config/output/polyfill)
控制 polyfills 的注入方式。

:::warning
Rsbuild 的 `output.polyfill` 会将 polyfills 注入到全局作用域中，这可能会意外地修改库消费者的全局变量。对于非全局的 polyfill 方案，请参考 [Polyfill - 浏览器](/zh/guide/advanced/output-compatibility.md#浏览器)。
:::

## output.sourceMap [![output.sourceMap](https://assets.rspack.rs/rsbuild/rsbuild-logo.svg)output.sourceMap](https://rsbuild.rs/zh/config/output/source-map)
用于设置是否生成 source map 文件，以及生成哪一种格式的 source map。

## output.target [![output.target](https://assets.rspack.rs/rsbuild/rsbuild-logo.svg)output.target](https://rsbuild.rs/zh/config/output/target)
- **命令行：** `--target <target>`（例如 `--target web`）

用于设置 Rsbuild 的构建产物类型。

对于 `esm`、`cjs`、`umd` 和 `iife` 格式，Rslib 默认将 `output.target` 设置为 `node`；对于 `mf` 格式，默认值为 `web`。

:::info
请查看 [解决方案](/zh/guide/solution/index.md) 了解更多关于构建产物的信息。
:::
