2023 年 11 月 02 日
Rspack 不再支持 Node.js 14,现在需要 Node.js 16+。
@rspack/core
现在是 @rspack/cli
的对等依赖,而不是直接依赖。这意味着您现在需要手动安装 @rspack/core
和 @rspack/cli
。这使 Rspack 更接近 webpack。从长远来看,@rspack/cli
的定位将不再是开箱即用的解决方案。我们将 @rspack/cli
与 webpack-cli 对齐,甚至可能直接支持在 webpack-cli
中使用 @rspack/core
。我们推荐 Rsbuild 作为开箱即用的解决方案。
在 v0.4.0 中,experiments.rspackFuture.disableTransformByDefault
默认启用。对于仍然需要旧行为的人员,您可以手动将此选项设置为 false
。
此功能主要解决三类问题:内置 代码转换功能,目标 和自定义的 Rule.type。
rspackExperiments.relay
jsc.transform.react
rspackExperiments.emotion
rspackExperiments.import
jsc.parser.decorators
jsc.env
node_modules
)这些类型已被删除
"typescript"
"jsx"
"tsx"
对于与 JS 相关的类型,将保留以下类型
"javascript/auto"
"javascript/esm"
"javascript/dynamic"
请参考 此处 获取完整的迁移指南。
查看我们之前的讨论 此处。
由于在 v0.4.0 中 experiments.rspackFuture.disableTransformByDefault
默认启用,builtin.react.refresh
也已被弃用。现在我们建议使用 @rspack/plugin-react-refresh
来启用 React 快速刷新。
查看 此处 获取更多详细信息。
builtin:sass-loader
现已被弃用。如果您正在使用它,请迁移到 sass-loader
。Rspack 将在 v0.5.0 中删除 builtin:sass-loader
。
experiments.incrementalRebuild
现已被弃用。Rspack 将在 v0.5.0 中删除它。
之前,一些 API 不应该被导出,但实际上却通过 @rspack/core 的重新导出而意外地被导出了。现在,通过这次重构,我们清理了 @rspack/core 中的导出 API。
这应该不会造成任何破坏,但如果您正在使用意外导出的 API,这可能会导致您的应用出现问题,并且您可能正在以 hacky 的方式使用 Rspack。
如果您确实需要这次重构中删除的 API,请在 Rspack 存储库中提交问题。
builtins.devFriendlySplitChunks
和 experiments.newSplitChunks
为了完全迁移到 Webpack 的拆分块实现,这些字段已被弃用。Rspack 将在 v0.5.0 中删除这些字段。
现在默认启用 newResolver。
newResolver 已通过所有 enhanced-resolve 的测试套件。它比之前的实现快 5 倍,比 enhanced-resolve 快 28 倍。
newResolver 可以配置为读取 tsconfig.json
的 compilerOptions.paths
和 references
字段,并提供对嵌套路径别名的更好支持。有关详细信息,请参见 API resolve.tsConfig。
要禁用 newResolver,请将 experiments.rspackFuture.newResolver
设置为 false
。
有一个 迁移示例 演示了如何从 Rspack 0.3.14 迁移到 Rspack 0.4.0。
@rspack/cli
或 Rsbuild
?如果您的应用程序是 CSR 应用程序,我们强烈建议您使用 Rsbuild 而不是自己配置 Rspack,因为 Rsbuild 比 @rspack/cli
更易于使用。
从 v0.4.0 开始,Rspack 不再支持 Node.js 14;现在需要 Node.js 16+。
@rspack/core
和 @rspack/cli
builtin:swc-loader
来支持模块转换从 v0.4.0 开始,Rspack 不再默认转换文件,您可以通过以下设置启用旧的转换行为
但我们建议您现在使用 builtin:swc-loader
来转换文件。更多详细信息请参见 弃用默认转换。
@rspack/plugin-react-refresh
当我们禁用默认转换时,builtin.react.refresh
无法正常工作,因此您需要使用 @rspack/plugin-react-refresh
来启用快速刷新。更多详细信息请参见 弃用 builtin.react.refresh。
在 v0.4.0 中,Rspack 弃用了一些内置选项并将它们迁移到 内置插件。
目前,Rspack 的内部插件分为两类
原始的 builtins.define
可以按照以下方式迁移
对于 builtins.html
,可以直接迁移到 HtmlRspackPlugin
当 builtins.html
中存在多个配置时,可以创建多个插件实例
对于 builtins.copy
,可以直接迁移到 CopyRspackPlugin.
对于原始的 builtins.minifyOptions
,我们提供了 SwcJsMinimizerRspackPlugin
其他内置选项可以直接参考 rspack 的 内置插件 进行迁移,或者根据升级到 v0.4.0 后的 CLI 提示完成。