当前文档列出了从 Rspack v0.7 到 v1.0 的所有不兼容更新,你可以参考此文档来迁移。
查看 Breaking changes in Rspack v1.0.0 了解更多细节。
在 Rspack 1.x 中,我们对齐了 Webpack 的配置项默认值。
experiments.css 的默认值从 true
调整为 false
。
在 Rspack 0.x 中,experiments.css
默认开启,这意味着以 *.css
结尾的文件会默认被视为 type: 'css/auto'
,不需要手动引入其他 loader 来处理 CSS 文件。
如果你依赖内置功能来处理 CSS 文件而不使用任何 loader,或者使用了如下的配置来处理 CSS 文件:
请注意,你现在需要手动启用 experiments.css
。
optimization.concatenateModules 默认值由 false
调整为:
mode
为 'production'
时,默认为 true
。mode
为其他值时,默认值为 false
。在 Rspack 1.x 中,模块拼接优化变得更加稳定。现在,在生产环境中默认开启该优化,以允许将多个模块拼接成单个模块以降低产物体积,提升压缩效率。
devtool 默认值由 false
调整为:
mode
为 'development'
时,默认为 'eval'
。mode
为其他值时,默认值为 false
。
@rspack/cli
会覆盖@rspack/core
中devtool
的默认值,因此如果你使用@rspack/cli
,此变更不受影响。
experiments.asyncWebAssembly 默认值从 false
调整为依赖 experiments.futureDefaults
配置项,当 experiments.futureDefaults
为 true
时才默认开启。
如果你使用 WebAssembly 模块作为异步模块,现在需要手动将 experiments.asyncWebAssembly
设置为 true
。
splitChunks.cacheGroups.{cacheGroup}.reuseExistingChunk 默认值从 true
调整为 false
。
当 mode
为 none
时,optimization.moduleIds 默认值调整为 'natural'
。
当 mode
为 none
时,optimization.chunkIds 默认值调整为 'natural'
。
请使用 resolve.tsConfig 代替。
请使用 output.library.amdContainer 代替。
Rspack 1.x 为了精简核心,将内置的 SWC 插件移除,现在你需要手动引入它们。
使用 @swc/plugin-styled-components 代替。
使用 @swc/plugin-emotion 代替。
使用 @swc/plugin-relay 代替。
使用 @swc/plugin-prefresh 代替。
在 Rspack 0.x 中我们使用内置的 rspack.SwcCssMinimizerRspackPlugin
来压缩 CSS 代码。现在,该插件已被移除,并改用 rspack.LightningCssMinimizerRspackPlugin 替代它。
如果你之前手动注册并配置 rspack.SwcCssMinimizerRspackPlugin
,现在需要使用 rspack.LightningCssMinimizerRspackPlugin
:
这是 Rspack 内置并默认启用的 JS 压缩插件。我们已将其配置与 SWC 的压缩配置对齐,不兼容的配置如下:
minimizerOptions.passes
:移动到 minimizerOptions.compress.passes
minimizerOptions.dropConsole
:移动到 minimizerOptions.compress.drop_console
minimizerOptions.pureFuncs
:移动到 minimizerOptions.compress.pure_funcs
minimizerOptions.keepClassNames
:移动到 minimizerOptions.mangle.keep_classnames
minimizerOptions.keepFnNames
:移动到 minimizerOptions.mangle.keep_fnames
minimizerOptions.comments
:移动到 minimizerOptions.format.comments
minimizerOptions.asciiOnly
:移动到 minimizerOptions.format.ascii_only
默认值的变化:
comments
(options.format.comments
):默认值从 false
改为 "some"
我们将其配置与 html-webpack-plugin 对齐,不兼容的配置如下:
excludedChunks
更名为 excludeChunks
mode
为 'production'
时,minify
默认为 true
@rspack/cli
已将其依赖的 webpack-dev-server
从 v4 升级至 v5。如果你使用 @rspack/cli
,请注意以下不兼容的变更:
ResolverFactory
和 Resolver
已被使用 Rust 进行重构,以统一 JS 侧和 Rust 侧的实现。由于这一变更,目前 ResolverFactory 和 Resolver 并不支持任何钩子。
此外,目前 Resolver
仅支持以下方法:
resolveSync
resolve
withOptions
此变更可能会导致某些插件无法正常使用。
Rspack 支持 NormalModuleFactory 的 resolve 钩子,在大多数情况下,你可以使用该钩子替代 Resolver
的 resolve
钩子来实现相关的功能。