代码 Vite 7 升级笔记:build.target 默认值抬到 Chrome 107,Node 18 出局

2026-09-20 21:05:15

Vite 7 升级笔记:build.target 默认值抬到 Chrome 107,Node 18 出局

官方发布说明:
Rolldown 集成文档:

Node.js 要求:20.19+ / 22.12+,Node 18 退场

Vite 7 要求 Node.js 20.19+ 或 22.12+,Node.js 18 被弃用(2025-04 EOL)。

选这两个版本线的原因和 require(esm) 有关:这些 Node.js 版本不需要 flag 就能支持 require(esm)。基于这一点,Vite 7.0 以纯 ESM 分发,同时 Vite 的 JS API 仍然可以被 CJS 模块 require。对使用者的影响是:构建机上如果还挂着 Node 18,升级 Vite 之前得先把 Node 换掉。

默认浏览器目标换成 baseline-widely-available

build.target 的默认值从 'modules' 改为 'baseline-widely-available'

浏览器集合每个大版本更新一次,取的是匹配 Baseline Widely available 特性兼容的最低浏览器版本。新的最低版本大致是:

浏览器Vite 7之前
Chrome10787
Edge107
Firefox10478
Safari16.014.0

直接后果是,一批特性可以不做转换就进生产包:原生 ES2022、顶层 await、私有类字段、逻辑赋值操作符等。产物因此更接近源码,体积和构建耗时都会受益。

代价是运行时下限被抬高。如果你的用户群里还有老版本 Safari 或 Chrome 需要覆盖,得显式把 build.target 调回去,或者用 @vitejs/plugin-legacy 之类的方案兜底——默认值不会替你考虑这部分。

Rolldown 集成:rolldown-vite

Rolldown 是基于 Rust 的下一代打包器,设计为 Rollup 的替代品,在保持生态兼容的前提下提升性能。

rolldown-vite 包替换默认的 vite 包即可,是 drop-in 替代。Rolldown 未来会成为 Vite 的默认打包器;切换后大型项目的构建时间缩短明显。

替换涉及的不只是一个打包器:

环节原来现在
构建RollupRolldown
optimizeresbuildRolldown
CommonJS 处理@rollup/plugin-commonjsRolldown
语法降级esbuildOxc
CSS 压缩Lightning CSS(默认)
JS 压缩esbuildOxc minifier(默认)
打包配置Rolldown

Vite 内部的插件(alias、resolve 等)也转成了 Rust 实现,原生插件默认启用,默认值为 'v1'

React 项目:plugin-react 与 Oxc

@vitejs/plugin-react v5.0.0+ 使用 Oxc 做 React 刷新转换。如果没有使用 Babel 插件(包括 React 编译器),整个转换都由 Oxc 完成,只需要更新 plugin-react 就能拿到提速。@vitejs/plugin-react-oxc 已弃用。

manualChunks 过时,改用 advancedChunks

manualChunks 已被标记为过时。Rolldown 通过 advancedChunks 提供更细粒度的分块控制,用法上类似 webpack 的 splitChunk。已有的 manualChunks 配置需要逐步迁移。

插件钩子过滤

插件可以指定模式,决定钩子在什么条件下被调用,以此减少 Rust 与 JS 运行时之间的通信开销。没有采用这一机制的插件,可以用 withFilter 包装器自行加上过滤条件。

新钩子 buildApp 与 this.meta

Vite 7 新增 buildApp 钩子,让插件能够协调多个环境的构建(Environment API for Frameworks)。

从 7.0.0 起,this.meta 在所有钩子中可用。

esbuild 变成可选 peer dependency

Vite 本身不再使用 esbuild,它退化为可选 peer dependency。

插件如果用到了 transformWithEsbuild,需要把 esbuild 加进插件自己的依赖,或者让用户手动安装——否则在干净环境下会直接报模块找不到。

从 Vite 6 升级

整体预期平滑。已被移除的废弃功能有两项:

  • Sass legacy API 支持
  • splitVendorChunkPlugin

这两处如果还在用,需要先换掉再升级。

后续:Full Bundle Mode

未来会引入全量打包模式(Full Bundle Mode),在生产与开发环境都提供打包文件。初期是可选开启,稳定后设为默认。

对现阶段的迁移来说,值得先确认的是三件事:Node 版本是否达标、build.target 默认值抬升后浏览器覆盖范围是否可接受、以及切换 rolldown-vitemanualChunks 与 esbuild 相关的插件代码是否需要调整。

复制全文 生成海报 Vite 前端 构建工具 Rolldown 性能优化

推荐文章

程序员茄子在线接单