代码 Vite+ 1.0 用一个 `vp` 收掉 Vite、Vitest、lint 和 Node 版本:升级只改一处,代价是也锁成一套

2026-10-31 21:05:25

Vite+ 1.0 用一个 vp 收掉 Vite、Vitest、lint 和 Node 版本:升级只改一处,代价是也锁成一套

Vite+ 1.0 于 2026-09-28 发布,出自 VoidZero,MIT 许可,1.0 之后周下载约 200 万。核心做法是把前端项目里散落的一堆工具合并成一个依赖、一个 CLI、一份配置:一个 vite-plus 依赖替代 eslint、prettier、vitest、tsup、turbo 这类包;一个 vp 命令加一份 vite.config.ts,管理 Node.js 运行时、包管理器、dev server、lint/format、测试、构建和任务。

  • 项目地址:https://vite.plus
  • Vite 官网:https://vite.dev
  • 中文站(含月度回顾翻译):https://vitejs.cn

命令

  • vp check — 用 Oxfmt 和 Oxlint 一次跑完格式化、lint 和类型检查
  • vp test — 跑 Vitest
  • vp dev / vp build — 跑基于 Rolldown 的 Vite 8
  • vp env — 管理 Node.js 版本
  • vp migrate — 把已有项目迁过来
  • vp toolchain — 打印当前实际使用的工具链版本
  • vp run — 带缓存的任务运行器
  • vp hooks — git hooks;另有 vp env doctor 做环境检查

工具链版本

vp toolchain 的输出:Vite 8.3.5、Rolldown 1.2.15、Vitest 5.0.5、Oxlint 1.89.0、Oxfmt 0.74.0、tsdown 0.23.1。这些版本全部由单个 vite-plus 包 pin 住。

这带来一个明确的取舍。好处是依赖树只有一层:升级时改一个版本号,拿到的是一组互相测过的组合,不用再处理 vitest 要 5.x 而某个插件只支持 4.x 这类版本冲突。代价是全家桶锁定:Vite、Vitest、Oxlint 的版本由 vite-plus 决定,你没法单独把 vitest 提前到某个小版本,也没法把 oxlint 换回 eslint;如果项目对某个工具有硬性版本要求,只能等上游发版。判断标准大概是——项目愿意跟着 Vite+ 的节奏走,收益明显;项目需要精细控制单个工具版本,这套方案会碍事。

安装与迁移

curl -fsSL https://vite.plus | bash

装完先跑 vp migrate。迁移前先执行一次看迁移计划,确认它会改动哪些配置和依赖,再决定是否落地。生产项目建议先读迁移指南再动手,不要直接在主干上跑。

框架无关,Laravel 已随附

VoidZero 2026 年 9 月的月度回顾(vitejs.cn 上有翻译)提到,Vite+ 是框架无关的,项目甚至不需要使用 Vite。7 月 beta 以来新增了 GitLab CI/CD 支持、tsup 迁移、Homebrew 与 Docker 安装方式、git hooks。目前的使用方包括 Dify、vinext、Tiptap,所有 Laravel starter kit 都已随附 Vite+。

官方给出的收益有三点:维护面变小(升一个版本,组合是测过的);命令统一(vp dev/check/test/build 在不同仓库里行为一致,对同事和对 coding agent 都一样);反馈更快(Oxlint、Oxfmt、Rolldown 都是 Rust 实现,加上 vp run 的任务缓存)。

Vite 8.3 里的相关改动

同一次回顾里还提到:Vite 的 bundled dev mode 在开发时直接跑生产打包器,用来压低大型应用的 dev server 开销,目前已经跑通整个 Vite playground 测试集,此前失败的测试约 74% 现在通过。HMR 边界改在浏览器里计算,patch 更小,未变更的重建不发更新,懒加载路由在开发时加载更快,import() 不再在真实模块之前请求 proxy chunk,按路由算请求数减半。另外 Vite 8.3 修了一个问题:当项目文件夹名里包含 node_modules 时,不再把自己的源码文件当成依赖处理。

复制全文 生成海报 Vite 前端 工具链 Vitest 工程化

推荐文章

程序员茄子在线接单