尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

如何用 rolldown-vite 从 Vite 7 渐进迁移到 Vite 8?

如何用 rolldown-vite 从 Vite 7 渐进迁移到 Vite 8? 如何用 rolldown-vite 从 Vite 7 渐进迁移到 Vite 8【免费下载链接】viteNext generation frontend tooling. Its fast!项目地址: https://gitcode.com/GitHub_Trending/vi/vite如果你维护着一个运行在 Vite 7 上的项目想升级到 Vite 8官方给出的推荐路径不是直接换版本号而是分两步走先把 Vite 7 切到rolldown-vite包用 Rolldown 实现的 Vite 7跑通后再升级到 Vite 8。这条渐进路径的目的是让任何不兼容问题先暴露在“bundler 换成了 Rolldown”这一件事上而不是和 Vite 8 的其他改动混在一起方便定位问题来源。适用前提项目当前使用 Vite 7且 Node.js 满足 20.19 或 22.12与 Vite 7 要求相同。官方在 Vite 8 beta 公告中把这条路径标注为“推荐用于更大或更复杂的项目”大多数简单项目直接升级通常也能工作但升级前都应先阅读 迁移指南。第一步把 Vite 7 切到 rolldown-viterolldown-vite包用 Rolldown 实现了 Vite 7不包含其他 Vite 8 的改动因此它适合作为中间状态你的 Vite 7 配置、插件和代码保持不变只有底层 bundler 从 esbuild/Rollup 换成了 Rolldown。操作是修改package.json把vite的开发依赖替换为 npm 别名迁移指南中的示例版本为7.2.2按你项目实际使用的 Vite 7 小版本调整{ devDependencies: { vite: npm:rolldown-vite7.2.2 } }然后用项目使用的包管理器重新安装依赖如npm install使别名生效。装完后项目里import vite拿到的就是rolldown-vite提供的 Vite 7 实现dev、build等脚本无需改动。这一步的验证方式就是把你日常的完整开发/构建流程完整跑一遍启动 dev server 确认页面、HMR 正常再执行生产构建确认产物可用。官方在 beta 公告中明确建议“升级后做彻底测试”。如果此时构建或运行时出错问题基本可以归因于 Rolldown 本身而不是 Vite 8 的行为变更。第二步从 rolldown-vite 升级到 Vite 8在rolldown-vite上稳定运行后撤销第一步的依赖改动并升级到 Vite 8{ devDependencies: { vite: ^8.0.0 } }同样重新安装依赖。由于 rolldown-vite 已经包含了 Rolldown 相关改动这一步你需要关注的只是 迁移指南中标注 “NRV” 的两个章节即只在这一步才会发生的变更默认浏览器目标变化build.target的默认值更新为 Chrome 111、Edge 111、Firefox 114、Safari 16.4对齐 2026-01-01 的 Baseline Widely Available。如果你的用户需要更低的浏览器版本需要显式通过build.target配置。移除的废弃功能向import.meta.hot.accept传递 URL 不再受支持需要传 id。兼容层会自动转换哪些配置Vite 8 用 Rolldown 和 Oxc 替换了 esbuild 和 Rollup但官方内置了兼容层多数项目不需要改配置依赖优化改用 Rolldown 执行。optimizeDeps.esbuildOptions已废弃会被自动转换为optimizeDeps.rolldownOptions包括minify→output.minify、treeShaking→treeshake、define→transform.define、loader→moduleTypes等映射完整对照表见 迁移指南。JavaScript 转换改用 Oxc。esbuild配置项已废弃会自动转换为oxc如esbuild.jsx: automatic→oxc.jsx: { runtime: automatic }、esbuild.define→oxc.define。JS 压缩默认使用 Oxc Minifier可通过已废弃的build.minify: esbuild切回 esbuild需自行把esbuild装为 devDependency。CSS 压缩默认使用 Lightning CSS可用build.cssMinify: esbuild切回同样需要自行安装 esbuild。build.rollupOptions更名为build.rolldownOptions、worker.rollupOptions更名为worker.rolldownOptions旧名被废弃但仍可用。要确认兼容层最终生成的选项迁移指南给出了在configResolved钩子里打印的做法const plugin { name: log-config, configResolved(config) { console.log(options, config.optimizeDeps.rolldownOptions) }, }把config.optimizeDeps.rolldownOptions换成config.oxc即可查看 Oxc 侧的转换结果。把该插件临时加进vite.config.js的plugins数组启动时终端输出的就是转换后的真实配置。需要留意的不兼容项以下项目在文档中被明确列为 Rolldown/Oxc 工具链不支持或有行为差异的地方如果你的项目命中需要在迁移前单独处理esbuild.supported选项Oxc 不支持该选项。原生装饰器降级Oxc 转换器目前不支持降低原生装饰器等待规范进展。文档给出的临时方案是用 Babelrolldown/plugin-babelbabel/plugin-proposal-decorators或 SWCrollup/plugin-swcswc/core做装饰器转换迁移指南中有完整配置示例。esbuild 降级为可选依赖Vite 不再直接依赖 esbuild。如果你用的插件内部调用了transformWithEsbuild需要把esbuild装为 devDependency官方建议迁移到transformWithOxc。CJS 模块 default 导入行为统一Rolldown 对 CJS 模块的default导入采用一致的处理方式可能破坏部分现有代码。可临时用legacy.inconsistentCjsInterop: true恢复旧行为。不再通过内容嗅探browser/module字段Vite 8 始终按resolve.mainFields的顺序解析。依赖旧行为的用resolve.alias或包管理器补丁处理。属性名混淆选项esbuild 的mangleProps、reserveProps、mangleQuoted、mangleCache在 Oxc 中不支持。高级场景仅少数用法受影响extglob 暂不支持plugin-legacy 不支持降级到 ES5 及以下build.rollupOptions.output.format的system和amd不再支持shouldTransformCachedModule、resolveImportMeta、renderDynamicImport钩子不受支持define传入对象时各变量持有独立副本JS API 的build()失败时抛出BundleError需通过.errors取单个错误。完整清单见 迁移指南的 Advanced 章节。如果你之前用的是 Rollup 时代的output.manualChunks对象形式该形式已被移除函数形式已废弃应改用 Rolldown 的codeSplitting选项build.rollupOptions.watch.chokidar被移除对应迁移到build.rolldownOptions.watch.watcher。验证与收尾完成两步升级后的收尾动作完整跑一遍 dev server 和生产构建确认页面、HMR 和产物均正常——官方文档建议升级后做彻底测试因为 Vite 8 是最重大的架构变更bundler 从 esbuild Rollup 换成 Rolldown 单一 bundler。如果怀疑构建产物行为异常源于压缩器可以按文档提供的build.minify: esbuild/build.cssMinify: esbuild临时切回 esbuild 做对照需先npm install -D esbuild。把仍在使用废弃项的配置optimizeDeps.esbuildOptions、esbuild、build.rollupOptions、worker.rollupOptions等逐步改写为对应的 Rolldown/Oxc 选项因为这些废弃项未来会被移除。如果你还在 Vite 6 上先按 Vite 7 的迁移指南升到 Vite 7再执行本文的两步路径。【免费下载链接】viteNext generation frontend tooling. Its fast!项目地址: https://gitcode.com/GitHub_Trending/vi/vite创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表