output

与构建产物相关的选项。

output.charset output.charsetoutput.charset

指定输出文件的 字符编码,以确保它们在不同的环境中能够正确显示。

output.cleanDistPath output.cleanDistPathoutput.cleanDistPath

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

output.copy output.copyoutput.copy

将指定的文件或目录拷贝到构建输出目录中,基于 rspack.CopyRspackPlugin 实现。

output.cssModules output.cssModulesoutput.cssModules

用于自定义 CSS Modules 配置。

output.dataUriLimit output.dataUriLimitoutput.dataUriLimit

设置图片、字体、媒体等静态资源被自动内联为 base64 的体积阈值。

output.distPath output.distPathoutput.distPath

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

Rslib 默认将 output.distPath 设置为:

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',
};

output.emitCss output.emitCssoutput.emitCss

是否将 CSS 输出到产物中。

output.externals output.externalsoutput.externals

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

在 bundle 模式下,Rslib 会默认将 package.jsondependenciesoptionalDependenciespeerDependencies 字段下的三方依赖添加到 output.externals 中, 查看 lib.autoExternal 了解更多信息。

NOTE

需要注意的是,output.externalsresolve.alias 有所不同。请查看 resolve.alias 文档以了解更多信息。

output.filenameHash output.filenameHashoutput.filenameHash

在生产模式构建后,是否在产物的文件名中添加 hash 值。

Rslib 默认将 output.filenameHash 设置为 false

output.filename output.filenameoutput.filename

设置构建产物的名称。

Rslib 默认会根据 format 设置 output.filename,详情可查看 autoExtension

output.inlineScripts output.inlineScriptsoutput.inlineScripts

用来控制是否用 <script> 标签将产物中的 script 文件(.js 文件)inline 到 HTML 中。

output.inlineStyles output.inlineStylesoutput.inlineStyles

用来控制是否用 <style> 标签将产物中的 style 文件(.css 文件)inline 到 HTML 中。

output.legalComments output.legalCommentsoutput.legalComments

配置 legal comment 的处理方式。

output.manifest output.manifestoutput.manifest

是否生成 manifest 文件,该文件包含所有构建产物的信息、以及入口模块与构建产物间的映射关系。

output.minify output.minifyoutput.minify

用于设置是否在生产模式下开启代码压缩,或是配置压缩工具的选项。

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

  • 在 format 为 esm, cjs 以及 umd 时,只会执行死代码消除和未使用代码消除,默认值为:
export default defineConfig({
  output: {
    minify: {
      js: true,
      css: false,
      jsOptions: {
        minimizerOptions: {
          mangle: false,
          minify: false,
          compress: {
            defaults: false,
            unused: true,
            dead_code: true,
            toplevel: true,
          },
          format: {
            comments: 'some',
            preserve_annotations: true,
          },
        },
      },
    },
  },
});
  • 在 format 为 mf 时,由于 MF 资源通过网络加载,这意味着它们不会被应用项目压缩。因此,需要在 Rslib 中对它们进行压缩。默认值为:
export default defineConfig({
  output: {
    minify: {
      js: true,
      css: false,
      jsOptions: {
        minimizerOptions: {
          mangle: false,
          // 启用压缩
          minify: true,
          compress: {
            defaults: false,
            unused: true,
            dead_code: true,
            // 避免 remoteEntry 的全局变量被 tree-shaking
            toplevel: false,
          },
          format: {
            comments: 'some',
            preserve_annotations: true,
          },
        },
      },
    },
  },
});

output.overrideBrowserslist output.overrideBrowserslistoutput.overrideBrowserslist

指定项目兼容的目标浏览器范围。

Rslib 默认会根据 syntax 生成 output.overrideBrowserslist,查看 ESX_TO_BROWSERSLIST 获取映射值。

output.polyfill output.polyfilloutput.polyfill

控制 polyfills 的注入方式。

WARNING

Rsbuild 的 output.polyfill 会将 polyfills 注入到全局作用域中,这可能会意外地修改库消费者的全局变量。对于非全局的 polyfill 方案,请参考 Polyfill - 浏览器

output.sourceMap output.sourceMapoutput.sourceMap

用于设置是否生成 source map 文件,以及生成哪一种格式的 source map。

output.target output.targetoutput.target

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

Rslib 默认将 output.target 设置为 node

INFO

请查看 解决方案 了解更多关于构建产物的信息。