首页
/ Vite 5.0 发布解析:Rollup 4、API 清理与 server.warmup 启动提速指南

Vite 5.0 发布解析:Rollup 4、API 清理与 server.warmup 启动提速指南

2026-09-03 17:23:35作者:卓炯娓

本篇技术指南基于 Vite 团队于 2023 年 11 月 16 日发布的官方公告(见 docs/blog/announcing-vite5.md),系统梳理 Vite 5.0 的核心变更:切换到 Rollup 4、API 清理(移除弃用特性)、define 的 AST 替换重构、Node.js 18+ 的运行要求,以及新引入的 server.warmup 启动预热能力。读完本文,你可以理解 Vite 5 各主要改动的动机与影响面,并结合仓库源码定位 server.warmup 的实现位置,为你的项目升级 Vite 5 做好评估与准备。

背景:Vite 4 奠定的生态基础与长期规划

公告首先回顾了 Vite 4 发布近一年来的生态进展,这些背景信息决定了 Vite 5 的定位——它不是一次大改,而是一次“清理与固化”:

  • 生态持续扩张:npm 周下载量从 250 万增长到 750 万;Astro、Nuxt、SvelteKit、Solid Start、Qwik City 等框架持续基于 Vite 构建,RedwoodJS 与 Remix 切换到 Vite,进一步推动了 React 生态的采用;Vitest 的增长速度快于 Vite 本身,Vite 与 Storybook、Nx、Playwright 等工具的集成不断完善,Vite dev 也支持了在 Deno 与 Bun 环境中运行。
  • ViteConf 2023 与 Rolldown 长期规划:在 ViteConf 上,Evan You 公布了 Vite 的长期计划——基于 Rolldown(Rollup 的 Rust 移植版本,API 兼容)重构核心。规划目标是:一旦就绪,Vite Core 将用 Rolldown 同时承接 Rollup 和 esbuild 的任务,带来构建性能提升,并大幅减少 dev 与 build 之间的行为不一致。公告发布时 Rolldown 尚处于早期阶段,团队计划在年底前开源代码库。

值得对照的是:从当前仓库源码看,这一长期规划后来已落地。packages/vite/package.json 显示当前 Vite 的构建依赖中已包含 rolldown,且 Vite 自身的构建工具链(rolldown --config rolldown.config.ts)也已采用 Rolldown,印证了公告中“性能敏感部分迁移到 Rust 实现”的方向。

快速上手 Vite 5

公告给出的上手方式:

  • 使用 pnpm create vite 脚手架创建项目,可选择你偏好的框架模板;
  • 使用 pnpm create vite-extra 获取其他框架与运行时模板(Solid、Deno、SSR、library starters);在 create vite 中,Others 选项下同样可以找到 vite-extra 模板。

公告同时提醒:Vite 官方 starter 模板的定位是“用于测试 Vite 与各框架兼容性的 playground”,实际生产项目建议使用各框架官方推荐的 starter(例如 Vue 的 create-vueNuxt 3、Svelte 的 SvelteKit,部分框架的创建命令在 create vite 中会直接重定向到各自 starter)。

在当前仓库中,脚手架工具对应 packages/create-vite 目录,内置了 vanilla、react、vue、svelte、preact、lit、qwik、solid 等框架的 JS 与 TypeScript 双模板(如 template-react-tstemplate-vue),其源码入口见 packages/create-vite/src

Node.js 支持:18 / 20+ 为硬性要求

Vite 5 放弃了对 Node.js 14 / 16 / 17 / 19 的支持(均已到达 EOL),Node.js 18 / 20+ 成为运行要求。这是对 Vite 长期“面向未来(future-proof)”策略的又一次推进:随着底层工具链(如 esbuild、Rollup 4)对新版本 Node.js 原生特性的依赖加深,维护过旧的运行时支持的代价越来越大。

如果你的项目仍运行在 Node.js 16 或更低版本,升级 Vite 5 前需要先升级 Node.js。

性能提升:性能指南与 server.warmup

Vite 5 在 Rollup 4 带来的构建性能提升之外,还带来了面向开发服务器的性能改进,核心有两点:

新增性能排查指南

仓库中新增了专门的性能指南 docs/guide/performance.md,帮助开发者识别和修复常见的性能问题(如依赖优化、模块图过大、转换瀑布等)。

server.warmup:预热常用文件,改善启动体验

server.warmup 是 Vite 5 引入的新特性,用于改善服务器启动后的首次加载体验。结合官方配置文档 docs/config/server-options.md 与性能指南 docs/guide/performance.md,其完整行为如下:

  • 类型{ clientFiles?: string[], ssrFiles?: string[] }
  • 作用:让你声明一组在服务器启动后应立即预转换(pre-transform)并缓存结果的文件,从而改善首次页面加载、避免转换瀑布(transform waterfalls);
  • clientFiles 仅用于客户端的文件,ssrFiles 仅用于 SSR 的文件;两者均接受相对于 root 的文件路径数组或 tinyglobby 的 glob 模式;
  • 官方建议只预热真正高频使用的文件,以免在启动时压垮 dev server。

配置示例(来自官方文档):

export default defineConfig({
  server: {
    warmup: {
      clientFiles: ['./src/components/*.vue', './src/utils/big-utils.js'],
      ssrFiles: ['./src/server/modules/*.js'],
    },
  },
})

另一个自动行为:当使用 --openserver.open 启动时,Vite 会自动预热应用入口点(或指定要打开的 URL),从而进一步缩短首次打开的等待时间。

源码印证:当前仓库中该特性的实现集中在 packages/vite/src/node/server/warmup.ts,并通过 packages/vite/src/node/server/index.ts 中的 warmupRequest 对外暴露(环境实例层面同样提供 environment.warmupRequest),说明预热请求是建立在环境级 transform 管道之上的。

Vite 5 主要变更清单

公告列出的 Vite 5 主要变更如下,每一项都对应 docs/guide/migration.md 迁移指南中的专项章节(以下为仓库中该指南的当前路径,章节内容会随版本演进,升级时请以你目标版本对应的文档为准):

变更 说明要点
Vite 改用 Rollup 4 驱动 构建性能获得显著提升
弃用 CJS Node API Node API 走向纯 ESM,CJS 接口被标记弃用
重构 defineimport.meta.env.* 替换策略 define 从正则替换改为基于 AST 的替换,修复了此前正则替换带来的一系列历史问题
SSR 外部化模块的值与生产一致 消除 dev 与 build 之间的行为差异
worker.plugins 改为函数形式 插件数组改为函数接收,增强灵活性
允许包含 . 的路径回退到 index.html SPA 路由回退行为放宽
对齐 dev 与 preview 的 HTML 服务行为 减少两种模式下的行为不一致
manifest 文件默认生成到 .vite 目录 默认输出位置调整
CLI 快捷操作需要额外按一次 Enter 避免误触
更新 experimentalDecoratorsuseDefineForClassFields 的 TypeScript 行为 TS 编译行为对齐
移除 --https 标志与 https: true 弃用 HTTPS 快捷选项
移除 resolvePackageEntryresolvePackageData API 清理已弃用的解析 API
移除此前已弃用的 API 见迁移指南“Removed deprecated APIs”章节

公告特别指出,Vite 5 的整体思路是清理 API(移除弃用特性)并简化多项功能、关闭长期存在的 issue,例如 define 切换到正规的 AST 替换。

如何迁移到 Vite 5

公告给出的迁移建议:

  1. 升级前先阅读迁移指南docs/guide/migration.md 提供了详细的逐版本迁移说明。公告发布时对应的是 Vite 4 → Vite 5 的指南;仓库当前版本已演进至 8.x,该文档为最新的迁移指南,历史版本的说明请查阅对应版本文档站。
  2. 完整变更列表见 Changelog:Vite 核心的完整变更清单记录在 packages/vite/CHANGELOG.md 中,5.0.0 条目(2023-11-16)即为该发布的低级别拆解。
  3. 生态协作保障:Vite 团队与生态伙伴合作,借助 vite-ecosystem-ci 在做出更大胆变更的同时避免回归——这也是 Vite 敢于在 5.0 中移除弃用 API 的底气所在。

致谢与后续发展

Vite 5 是 850 多位核心贡献者、下游维护者、插件作者与 Vite 团队共同努力的结果,本次重大发布的发布流程由 Bjorn Lu 主导;StackBlitz、Nuxt Labs 与 Astro 持续通过雇用 Vite 团队成员的方式投入 Vite 开发。

从这份公告出发,可以串起 Vite 此后几年的演进主线:Vite 5 完成 API 清理并埋下 Rolldown 的种子 → Rolldown 开源并进入技术预览 → 当前仓库中的 Vite 8 已基于 Rolldown 与 Oxc 构建(见 packages/vite/package.json 的依赖与 docs/guide/migration.md 中关于 Rolldown 集成、Oxc 转换与压缩的说明)。如果你正站在 Vite 5 这一里程碑上升级项目,理解公告中“清理 + 面向未来”的主线,就能更从容地应对后续每个大版本的迁移。

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
33
18
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.12 K
2.72 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
527
590
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
904
1.82 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
854
1.34 K
docsdocs
暂无描述
Markdown
889
5.78 K
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.52 K
1.01 K
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.33 K
1.45 K
cann-learning-hubcann-learning-hub
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
982
502
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
540
384