diff --git a/guide/rolldown.md b/guide/rolldown.md index b9266078..efdf97d4 100644 --- a/guide/rolldown.md +++ b/guide/rolldown.md @@ -99,6 +99,42 @@ Rolldown 专注于三个主要原则: 如果你自己没有传递这个选项,这个问题必须由使用的框架来解决。你可以通过设置 `ROLLDOWN_OPTIONS_VALIDATION=loose` 环境变量来暂时忽略这个错误。 +### API 差异 {#api-differences} + +#### `manualChunks` 改为 `advancedChunks` {#manualchunks-changed-to-advancedchunks} + +Rolldown 不再支持 Rollup 中可用的 `manualChunks` 选项。取而代之的是,它提供了一个更细粒度的设置:[`advancedChunks`](https://rolldown.rs/guide/in-depth/advanced-chunks#advanced-chunks),其行为与 webpack 的 `splitChunk` 类似。 + +```js +// 旧配置 (Rollup) +export default { + build: { + rollupOptions: { + output: { + manualChunks(id) { + if (/\/react(?:-dom)?/.test(id)) { + return 'vendor' + } + } + } + } + } +} + +// 新配置 (Rolldown) +export default { + build: { + rollupOptions: { + output: { + advancedChunks: { + groups: [{ name: 'vendor', test: /\/react(?:-dom)?// }] + } + } + } + } +} +``` + ## 性能 {#performance} `rolldown-vite` 主要致力于确保与现有生态系统的兼容性,因此其默认配置旨在实现平滑过渡。如果你切换到更快的基于 Rust 的内部插件或进行其他自定义配置,还可以获得进一步的性能提升。 @@ -109,6 +145,12 @@ Rolldown 专注于三个主要原则: 要测试它们,你可以在你的 Vite 配置中将 `experimental.enableNativePlugin` 选项设置为 `true`。 +### `@vitejs/plugin-react-oxc` {#@vitejs/plugin-react-oxc} + +当使用 `@vitejs/plugin-react` 或 `@vitejs/plugin-react-swc` 时,你可以切换到 `@vitejs/plugin-react-oxc` 插件,它使用 Oxc 来实现 React 的快速刷新(Fast Refresh),取代原先的 Babel 或 SWC。该插件的设计目标是作为替代品无缝接入,同时提供更好的构建性能,并与 `rolldown-vite` 的底层架构保持一致。 + +请注意,只有在未使用任何 Babel 或 SWC 插件(包括 React 编译器)且未修改 SWC 选项的情况下,你才可以切换到 `@vitejs/plugin-react-oxc`。 + ### `withFilter` 包装器 {#withfilter-wrapper} 插件作者可以选择使用 [钩子过滤功能](#hook-filter-feature),以减少 Rust 和 JavaScript 运行时之间的通信开销。