我上手了 Vite+ 1.0:Node 不用自己装,lint 却翻车了

10 月 7 号,尤雨溪的 VoidZero 正式发布了 Vite+ 1.0。发布会当天全网都在转公告,一周过去了,我决定不聊发布会,直接把全流程跑一遍------从装 CLI 到建项目、dev、build、lint、test,一条龙。

先说结论:一个 vp 命令,把 Node 运行时、包管理器和整套前端工具链全管起来了。惊喜是真的,坑也是真的,其中一个还挺离谱。

它到底统一了什么

以前开一个前端项目,你要:装 Node、选包管理器、配 Vite、配 ESLint、配 Prettier、配 Vitest......每个都要单独装一遍、对一遍版本。Vite+ 的目标就是把这些全收进一个 CLI。

vp 的核心命令长这样:

命令 干什么
vp create 从模板建项目
vp migrate 把现有项目迁到 Vite+
vp dev / build / preview 开发、构建、预览
vp lint / fmt / check Oxlint 检查、Oxfmt 格式化、全家桶体检
vp test 跑 Vitest
vp install 装依赖
vp toolchain 看整套工具链版本关系

模板除了内置的四类(application / library / monorepo / generator),还直接代理了 create-vite、create-next-app、create-nuxt、sv create、@tanstack/start 这些官方脚手架,甚至支持任意 npm 包或 git 仓库当模板。

我建项目时 vp toolchain 输出的实际版本:

  • vite 8.3.4(注意,是 Vite 8)
  • rolldown 1.2.13(Rust 写的打包器,Rollup 的替代)
  • vitest 5.0.4
  • oxlint 1.88.0 + oxfmt 0.73.0
  • tsdown 0.23.1

ESLint、Prettier、Rollup 一个都没出现,全被 Rust 系的替代品接管了。

真实数字

我的环境:MacBook arm64,npm 走的国内镜像。全程计时:

步骤 结果 耗时
npm install vite-plus 84 个包 37.5s
vp create 建项目+装依赖 脚手架+依赖完成 22.5s
vp build(生产构建) 9 个模块 229ms
vp fmt(格式化) 8 个文件 / 10 线程 583ms
vp dev 启动 5174 端口就绪 4 秒内

build 229ms 是模板项目(9 个模块)的成绩,真实大项目没这个数,但这个量级还是能说明 Rolldown 的底子。

三个惊喜

1. Node 都不用自己装了。

vp create 跑到一半我注意到一行输出:Node 24.14.1 npm 11.14.1。我本机明明是 Node 24.18.0------vp 自己下载了一套运行时在用,跟本机的互不干扰。

生成的 package.json 里有一段:

json 复制代码
"devEngines": {
  "packageManager": {
    "name": "npm",
    "version": "11.14.1",
    "onFail": "download"
  }
}

onFail: "download"------运行时不对,自动下载对的。团队里「我这 Node 版本跟你不一样跑不起来」这个经典扯皮场景,被从工具层面干掉了。

2. AGENTS.md 默认生成。

建完项目,目录里直接躺着一个 AGENTS.md,内容是教 AI 编程工具怎么用这个项目:vp 的内置命令和 scripts 的区别、提交前要跑 vp check 和 vp test、出问题跑 vp env doctor。

现在大家用 Claude Code、Cursor 这类工具写码,第一件事就是喂项目说明书。Vite+ 把这一步做成了默认行为,这个嗅觉是真的准。

3. devDependencies 只剩 3 个。

json 复制代码
"devDependencies": {
  "typescript": "~6.0.2",
  "vite": "npm:@voidzero-dev/vite-plus-core@1.2.0",
  "vite-plus": "1.2.0"
}

没有 eslint、没有 prettier、没有 vitest------lint/format/test 全部内置在 vite-plus 里。项目依赖清单肉眼可见地瘦了。

四个坑

真上手就会发现,1.x 阶段的毛边还不少。

坑 1:npx vp 会装到别人的包。

npm 上有个跟它无关的包就叫 vp。你在项目外跑 npx vp,npm 装的是那个同名包,跑起来直接被拒:提示你 npx vp 不是正确用法,去看官方安装文档。名字撞了这事 vp 自己也知道,但第一次撞上还是懵的。

坑 2:局部安装跑不了 create。

我图干净没装全局,用 node_modules/.bin/vp create 建项目,直接报错 spawn vp ENOENT。原因是 create 过程内部会 spawn vp install,这个子进程默认去全局 PATH 里找 vp------局部安装找不到自己。

解法是把 node_modules/.bin 塞进 PATH 再跑。也理解了官方为什么主推 curl 脚本全局安装了。

坑 3:lint 直接翻车。

vp lint 报错,tsgolint 的二进制(@oxlint-tsgolint/darwin-arm64)一启动就被系统 SIGKILL,exit 137,vp lint 和 vp check 全军覆没。

我排查了一圈:不是 macOS 的 quarantine 拦截(xattr 里只有 provenance),单独跑二进制同样 137。也就是说 1.2.0 的 darwin-arm64 版 tsgolint 在我这台 Mac 上就是起不来。lint 这条腿目前是瘸的,只能等官方修。

坑 4:--directory 不认 ..。

想建到上级目录,--directory ../vp-app 直接报「contains ".." which is not allowed」。只能先 cd 到目标位置再建子目录,小但烦。

一个值得吵的点

回头看你会发现 package.json 里那行有点扎眼:

json 复制代码
"vite": "npm:@voidzero-dev/vite-plus-core@1.2.0"

你项目里的 vite,已经不是社区版的 vite 了,是 VoidZero 定制核心的 alias,还配了 overrides 强制锁死。build 走的是 vp 内置的 Rolldown,不是你 package.json 里能直接看到的东西。

这就是全家桶的另一面:命令统一了,黑盒也变多了。出问题时你要去翻 vite-plus 的文档而不是 Vite 文档;想换掉其中一件(比如不想要 Oxlint 想用 ESLint),成本比以前高。

我的判断:side project 和新项目值得直接上,体验确实干净;生产项目和团队项目再等等,至少等 tsgolint 这类稳定性问题修掉。

迁移决策速查

你的情况 建议
新 side project 直接上,成本低收益明显
新团队项目 等一等,盯 tsgolint 等 darwin 稳定性问题
老项目(Vite 7 及以下) 用 vp migrate 先试跑,别急着切
重度 ESLint 插件依赖 暂缓,Oxlint 插件生态还在补课

装法一句话:官方脚本 curl -fsSL https://vite.plus | bash 装全局;不想要全局就 npm 装 vite-plus 然后把 node_modules/.bin 加进 PATH。


工具链统一这事,方向我认,Rust 化的性能也实打实。但「统一」和「锁定」之间那条线怎么画,Vite+ 还在 1.x 阶段用毛边提醒你它没到稳态。

你打算把手头的项目迁过去吗,还是觉得全家桶就是一种绑架?评论区聊聊。

相关推荐
松就是我902984 小时前
你的 PPT 不缺内容,缺一个讲它的人
前端
松就是我902984 小时前
别再熬夜做 PPT 了!输入一个主题,AI 帮你把整套幻灯片做好,还能随便改字
前端
吴凡wudianmei4 小时前
每调一次模型都花钱?如何用工程手段把调用压到最少?
前端·后端·架构
李元_霸4 小时前
基于 AI 的 Web 与 App 端到端测试实践
前端·人工智能
欣欣之王来了4 小时前
Vue3项目脚手架:Vite vs Vue CLI怎么选?
前端·学习·架构·项目·vue3教程
用户2788607285675 小时前
别把 tool.completed 当成业务成功:AI 工具权限审计的四层事件链
前端
陆柒1455 小时前
跟着 Webpack 配置学习前端工程化
前端
用户6353300254795 小时前
Day 1|HTML5:一个商城首页的骨架,从 DOCTYPE 到语义化
前端
平凡的阿泽5 小时前
我用 Trae 实现了AI辩论赛
前端