Function | undefinedundefined你可以通过 tools.bundlerChain 来修改默认的 Rspack 和 webpack 配置,它的值为 Function 类型,接收两个参数:
bundler-chain 对象实例,你可以通过这个实例来修改 Rspack 和 webpack 的配置。env、isProd、CHAIN_ID 等。Bundler chain 是 webpack chain 的子集,其中包含一部分 webpack chain API,你可以用它来同时修改 Rspack 和 webpack 的配置。
通过 bundler chain 修改的配置,在 Rspack 和 webpack 构建时均可生效。需要注意的是,bundler chain 只支持修改 Rspack 和 webpack 间无差异部分的配置。如,修改 devtool 配置项(Rspack 和 webpack 的 devtool 属性值类型相同),或添加一个Rspack 兼容的 webpack 插件。
tools.bundlerChain的执行时机早于 tools.rspack,因此会被其他配置中的修改所覆盖。
'development' | 'production' | 'test'通过 env 参数可以判断当前环境为 development、production 还是 test。比如:
boolean通过 isProd 参数可以判断当前环境是否为 production。比如:
'web' | 'node' | 'web-worker' | 'service-worker'通过 target 参数可以判断当前构建的目标运行时环境。比如:
boolean判断当前构建的目标运行时环境是否为 node,等价于 target === 'node'。
boolean判断当前构建的目标运行时环境是否为 web-worker,等价于 target === 'web-worker'。
typeof import('html-webpack-plugin')通过这个参数你可以拿到 html-webpack-plugin 插件的实例。
Rsbuild 中预先定义了一些常用的 Chain ID,你可以通过这些 ID 来定位到内置的 Rule 或 Plugin。
请留意,下列的一部分 Rule 或 Plugin 并不是默认存在的,当你开启特定配置项、或是注册某些插件后,它们才会被包含在 Rspack 或 webpack 配置中。
比如,RULE.STYLUS 仅在注册了 Stylus 插件后才会存在。
| ID | 描述 | 
|---|---|
| RULE.MJS | 处理 mjs的规则 | 
| RULE.CSS | 处理 css的规则 | 
| RULE.LESS | 处理 less的规则 | 
| RULE.SASS | 处理 sass的规则 | 
| RULE.STYLUS | 处理 stylus的规则 | 
| RULE.TOML | 处理 toml的规则 | 
| RULE.YAML | 处理 yaml的规则 | 
| RULE.WASM | 处理 wasm的规则 | 
| RULE.NODE | 处理 node的规则 | 
通过 ONE_OF.XXX 可以匹配到规则数组中的某一类规则。
| ID | 描述 | 
|---|---|
| ONE_OF.SVG | 处理 SVG 的规则,在 data URI 和单独文件之间自动选择 | 
| ONE_OF.SVG_URL | 处理 SVG 的规则,输出为单独文件 | 
| ONE_OF.SVG_INLINE | 处理 SVG 的规则,作为 data URI 内联到 bundle 中 | 
| ONE_OF.SVG_ASSETS | 处理 SVG 的规则,在 data URI 和单独文件之间自动选择 | 
通过 USE.XXX 可以匹配到对应的 loader。
| ID | 描述 | 
|---|---|
| USE.LESS | 对应 less-loader | 
| USE.SASS | 对应 sass-loader | 
| USE.STYLUS | 对应 stylus-loader | 
| USE.VUE | 对应 vue-loader | 
| USE.TOML | 对应 toml-loader | 
| USE.YAML | 对应 yaml-loader | 
| USE.NODE | 对应 node-loader | 
| USE.SVGR | 对应 @svgr/webpack | 
| USE.POSTCSS | 对应 postcss-loader | 
| USE.RESOLVE_URL_LOADER_FOR_SASS | 对应 resolve-url-loader | 
通过 PLUGIN.XXX 可以匹配到对应的 plugin。
| ID | 描述 | 
|---|---|
| PLUGIN.HTML | 对应 HtmlPlugin,使用时需要拼接 entry 名称:${PLUGIN.HTML}-${entryName} | 
| PLUGIN.APP_ICON | 对应 AppIconPlugin | 
| PLUGIN.INLINE_HTML | 对应 InlineChunkHtmlPlugin | 
| PLUGIN.BUNDLE_ANALYZER | 对应 WebpackBundleAnalyzer | 
| PLUGIN.ASSETS_RETRY | 对应 Rsbuild 中的 webpack 静态资源重试插件 WebpackAssetsRetryPlugin | 
| PLUGIN.VUE_LOADER_PLUGIN | 对应 VueLoaderPlugin | 
| PLUGIN.AUTO_SET_ROOT_SIZE | 对应 Rsbuild 中的自动设置根字体大小插件 AutoSetRootSizePlugin | 
通过 MINIMIZER.XXX 可以匹配到对应的压缩工具。
| ID | 描述 | 
|---|---|
| MINIMIZER.JS | 对应 TerserWebpackPlugin或SwcJsMinimizerRspackPlugin | 
| MINIMIZER.CSS | 对应 CssMinimizerWebpackPlugin | 
使用示例可参考:BundlerChain 示例。