undefinedrspack-chain 是一个用于配置 Rspack 的工具库。它提供了链式 API,使得配置 Rspack 变得更加灵活。通过使用 rspack-chain,你可以更方便地修改和扩展 Rspack 配置,而不需要直接操作复杂的配置对象。
你可以通过 tools.bundlerChain 来调用 rspack-chain 以修改默认的 Rspack 配置,它的值是一个函数,接收两个参数:
rspack-chain 实例,你可以通过它来修改 Rspack 配置。env、isProd、CHAIN_ID 等。
tools.bundlerChain会早于 tools.rspack 被执行,因此会被tools.rspack覆盖。
Rsbuild 内置的 Rspack 配置会随着迭代而发生变化,这些变化不会反映在 semver 中,因此在升级 Rsbuild 时,你的自定义配置可能会失效。
参考:RspackChain 示例。
'development' | 'production' | 'test'通过 env 参数可以判断当前环境为 development、production 还是 test,比如:
boolean一个布尔值,表示当前是否为开发模式构建,当 mode 为 development 时,值为 true。
boolean一个布尔值,表示当前是否为生产模式构建,当 mode 为 production 时,值为 true。
'web' | 'node' | 'web-worker'当前 构建目标。
你可以为不同的构建目标设置不同的 Rspack 配置,比如:
boolean一个布尔值,表示当前 构建目标 是否为 node,等价于 target === 'node'。
boolean一个布尔值,表示当前 构建目标 是否为 web-worker,等价于 target === 'web-worker'。
RspackRspack 实例,等价于 import { rspack } from '@rsbuild/core'。
和当前环境有关的上下文信息。
typeof import('html-rspack-plugin')对应 html-rspack-plugin 插件的默认导出。
Rsbuild 中预先定义了一些常用的 Chain ID,你可以通过这些 ID 来定位到内置的 Rule 或 Plugin。
请留意,下列的一部分 Rule 或 Plugin 并不是默认存在的,当你开启特定配置项、或是注册某些插件后,它们才会被包含在 Rspack 或 webpack 配置中。
比如,RULE.STYLUS 仅在注册了 Stylus 插件后才会存在。
| ID | 描述 |
|---|---|
RULE.JS | 处理 js 和 ts 的规则 |
RULE.SVG | 处理 svg 的规则 |
RULE.CSS | 处理 css 的规则 |
RULE.LESS | 处理 less 的规则 |
RULE.SASS | 处理 sass 的规则 |
RULE.WASM | 处理 wasm 的规则 |
RULE.FONT | 处理 font 的规则 |
RULE.IMAGE | 处理 image 的规则 |
RULE.MEDIA | 处理 media 的规则 |
RULE.VUE | 处理 vue 的规则(依赖 Vue 插件) |
RULE.SVELTE | 处理 svelte 的规则(依赖 Svelte 插件) |
RULE.STYLUS | 处理 stylus 的规则(依赖 Stylus 插件) |
通过 ONE_OF.[ID] 可以匹配到规则数组中的某一类规则。
| ID | 描述 |
|---|---|
ONE_OF.SVG_URL | 处理 SVG 的规则,输出为单独文件 |
ONE_OF.SVG_INLINE | 处理 SVG 的规则,作为 data URI 内联到 bundle 中 |
ONE_OF.SVG_ASSETS | 处理 SVG 的规则,在 data URI 和单独文件之间自动选择 |
通过 USE.[ID] 可以匹配到对应的 loader。
| ID | 描述 |
|---|---|
USE.SWC | 对应 builtin:swc-loader |
USE.POSTCSS | 对应 postcss-loader |
USE.STYLE | 对应 style-loader |
详见 自定义 loader
通过 PLUGIN.[ID] 可以匹配到特定的 Rspack 或 webpack plugin。
详见 自定义 Plugin
通过 MINIMIZER.[ID] 可以匹配到对应的压缩工具。
| ID | 描述 |
|---|---|
MINIMIZER.JS | 对应 SwcJsMinimizerRspackPlugin |
MINIMIZER.CSS | 对应 LightningCssMinimizerRspackPlugin |