close
logologo
指南
配置
插件
API
社区
版本
更新日志
Rsbuild 0.x 文档
English
简体中文
指南
配置
插件
API
社区
更新日志
Rsbuild 0.x 文档
English
简体中文
logologo
Overview
root
mode
plugins
logLevel
environments

dev

dev.assetPrefix
dev.browserLogs
dev.cliShortcuts
dev.client
dev.hmr
dev.lazyCompilation
dev.liveReload
dev.progressBar
dev.setupMiddlewares
dev.watchFiles
dev.writeToDisk

resolve

resolve.aliasStrategy
resolve.alias
resolve.conditionNames
resolve.dedupe
resolve.extensions
resolve.mainFields

source

source.assetsInclude
source.decorators
source.define
source.entry
source.exclude
source.include
source.preEntry
source.transformImport
source.tsconfigPath

output

output.assetPrefix
output.charset
output.cleanDistPath
output.copy
output.cssModules
output.dataUriLimit
output.distPath
output.emitAssets
output.emitCss
output.externals
output.filenameHash
output.filename
output.injectStyles
output.inlineScripts
output.inlineStyles
output.legalComments
output.manifest
output.minify
output.module
output.overrideBrowserslist
output.polyfill
output.sourceMap
output.target

html

html.appIcon
html.crossorigin
html.favicon
html.inject
html.meta
html.mountId
html.outputStructure
html.scriptLoading
html.tags
html.templateParameters
html.template
html.title

server

server.base
server.compress
server.cors
server.headers
server.historyApiFallback
server.host
server.htmlFallback
server.https
server.middlewareMode
server.open
server.port
server.printUrls
server.proxy
server.publicDir
server.strictPort

security

security.nonce
security.sri

tools

tools.bundlerChain
tools.cssExtract
tools.cssLoader
tools.htmlPlugin
tools.lightningcssLoader
tools.postcss
tools.rspack
tools.styleLoader
tools.swc

performance

performance.buildCache
performance.bundleAnalyze
performance.chunkSplit
performance.dnsPrefetch
performance.preconnect
performance.prefetch
performance.preload
performance.printFileSize
performance.profile
performance.removeConsole
performance.removeMomentLocale

moduleFederation

moduleFederation.options
📝 在 GitHub 上编辑此页
上一页output.polyfill
下一页output.target

#output.sourceMap

  • 类型:
type SourceMap =
  | boolean
  | {
      js?: Rspack.Configuration['devtool'];
      css?: boolean;
    };
  • 默认值:
const defaultSourceMap = {
  js: mode === 'development' ? 'cheap-module-source-map' : false,
  css: false,
};

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

什么是 source map

source map 是保存源代码映射关系的信息文件,它记录了编译后的代码的每一个位置,以及所对应的编译前的位置。通过 source map,可以在调试编译后的代码时,直接查看对应的源代码。

#默认行为

默认情况下,Rsbuild 的 source map 生成规则如下:

  • 在开发模式构建时,会生成 JS 文件的 source map,便于进行开发调试;不会生成 CSS 文件的 source map。
  • 在生产模式构建时,不会生成 JS 和 CSS 文件的 source map,以提供最佳的构建性能。

#布尔值

如果 output.sourceMap 为 true,则会根据 mode 生成 JS 和 CSS 文件的 source map,等价于:

export default {
  output: {
    sourceMap: {
      js: mode === 'development' ? 'cheap-module-source-map' : 'source-map',
      css: true,
    },
  },
};

如果 output.sourceMap 为 false,则不会生成 JS 和 CSS 文件的 source map,等价于:

export default {
  output: {
    sourceMap: {
      js: false,
      css: false,
    },
  },
};

#JS source map

JS 文件的 source map 通过 sourceMap.js 来控制,可以传入 Rspack devtool 选项支持的所有 source map 格式,设置为 false 为关闭。

比如,如果你需要在所有模式生成高质量的 source map,可以设置为:

export default {
  output: {
    sourceMap: {
      js: 'source-map',
    },
  },
};

你也可以根据 NODE_ENV 来设置不同的 source map 格式:

export default {
  output: {
    sourceMap: {
      js:
        process.env.NODE_ENV === 'production'
          ? // 生产模式使用高质量的 source map 格式
            'source-map'
          : // 开发模式使用性能更好的 source map 格式
            'cheap-module-source-map',
    },
  },
};
WARNING

在生产构建中使用 source-map 或 hidden-source-map 等选项时,请勿将 source maps (.map 文件) 部署到公开访问的 Web 服务器或 CDN 上。公开 source maps 会暴露你的源代码,并且可能带来安全风险。

#CSS source map

CSS 文件的 source map 通过 sourceMap.css 来控制,设置为 true 为开启,设置为 false 为关闭。

比如,如果需要生成 CSS 文件的 source map,可以设置为:

export default {
  output: {
    sourceMap: {
      css: true,
    },
  },
};

在生产构建时,我们不推荐同时开启 output.injectStyles 和 output.sourceMap.css,因为 output.injectStyles 会将 source map 注入到 JS 文件中,这会增加文件的体积并导致页面加载变慢。

你可以仅在开发模式下开启 CSS 文件的 source map:

export default {
  output: {
    injectStyles: true,
    sourceMap: {
      css: process.env.NODE_ENV === 'development',
    },
  },
};