00 / 00

Vite Plus 工具链

了解 01MVP 为什么使用 Vite Plus,以及 vp、vpr、vpx 的常见命令

01MVP 使用 Vite Plus 作为统一开发工具链。你仍然是在写 TypeScript、React、TanStack Start、Drizzle 和 pnpm workspace,只是日常命令尽量交给 vpvprvpx 处理。

Vite Plus 官方文档在 viteplus.dev。本页讲的是 01MVP 模板里的使用方式。

为什么模板使用 Vite Plus

大型前端 monorepo 里,常见问题通常是工具太分散:Node 版本、包管理器、Vite、Vitest、lint、format、hooks、workspace 任务运行,各自都有一套命令和配置。

Vite Plus 的价值是把这些日常动作收进同一个命令面:

  • vp install 按仓库声明的包管理器安装依赖。
  • vp check 统一做格式、lint 和静态检查。
  • vp test 使用 Vite Plus 内置的 Vitest 入口。
  • vp devvp buildvp preview 运行当前 app 的 Vite 开发、构建和预览。
  • vp run / vpr 运行 package.json 里的脚本,并理解 workspace package。
  • vpx 运行一次性 CLI,例如 vpx shadcn@latest

对 01MVP 这种 products/<product> monorepo 来说,最重要的是命令可以明确指定产品或 package,例如:

vpr @01mvp/product#dev
vpr @01mvp/web#dev
vpr @01mvp/i18n#build

这样你不用先 cd 到某个目录,也不用手写很长的 package-manager filter。

三个命令入口

命令用途常见例子
vpVite Plus 内建命令vp installvp checkvp testvp build
vprvp run 的短写,运行脚本vpr @01mvp/product#devvpr @01mvp/web#test
vpx一次性运行 CLIvpx shadcn@latestvpx auth@latest secret

vpr @01mvp/web#dev 等价于:

vp run @01mvp/web#dev

也可以写成完整 filter 形式:

vp run --filter @01mvp/web dev

日常手动输入时推荐 vpr @scope/package#script,CI 或长文档里可以保留 vp run --filter <package> <script>,更直观。

内建命令和脚本命令不要混用

Vite Plus 有一批内建命令,例如 vp buildvp testvp check。这些命令不会去执行同名 package.json script。

vp build      # 运行当前 app 的 Vite Plus 内建 production build
vpr build     # 运行当前 package.json 里的 build script
vp run build  # 和 vpr build 等价

vpr @01mvp/web#build 里面确实会执行 Vite 构建,但它不是只执行 Vite 构建。它会先生成 Paraglide i18n 文件,再加载产品 env、写安全响应头、调用 vp build、复制数据库迁移文件。

因此生产构建应该跑产品脚本:

vpr @01mvp/product#build

只有在你要单独执行“当前 app 的 Vite Plus 内建构建”时,才直接用 vp build

vp preview 也属于内建命令。它会启动 Vite preview server 来预览已经存在的生产构建产物,不会自动先执行 build。通常顺序是:

vp build
vp preview

start 也依赖 build 产物,但它走的是产品自己的 Node production server。以 01MVP web 为例,vpr @01mvp/web#start 会运行 scripts/start-node.mjs,负责读取 dist/server、服务 dist/client 静态资源、挂载 SSR handler,并补上产品安全响应头。

因此两者的使用场景不同:

命令做什么适合场景
vp preview / vpr @01mvp/web#preview用 Vite preview server 预览已有 build本地快速看 production build
vpr @01mvp/web#start用产品 Node server 启动已有 build本地模拟 Node 生产运行方式
vpr @01mvp/web#preview:cfbuild 后用 Wrangler 本地预览 WorkerCloudflare Workers 路径检查

如果你要预览 web 产品脚本包装过的构建结果,用:

vpr @01mvp/web#preview

常见命令速查

目标传统写法01MVP 推荐写法
安装依赖pnpm installvp install
格式化 + lint + 静态检查prettier --check . && eslint . && tsc --noEmitvp check
自动修复格式和基础 lintprettier --write . && eslint . --fixvp check --fix
运行测试vitest runvp testvpr @01mvp/product#test
测试 watch 模式vitestvp test watch
覆盖率vitest run --coveragevpr @01mvp/web#test --coverage
启动产品开发服务器pnpm --filter @01mvp/product devvpr @01mvp/product#dev
启动 Web apppnpm --filter @01mvp/web devvpr @01mvp/web#dev
产品生产构建pnpm --filter @01mvp/product buildvpr @01mvp/product#build
跑某个 package 脚本pnpm --filter @01mvp/i18n buildvpr @01mvp/i18n#build
一次性 CLIpnpm dlx shadcn@latest / npx shadcn@latestvpx shadcn@latest

根目录和产品目录怎么选

从仓库根目录运行时,带上 package 名最清楚:

vpr @01mvp/product#dev
vpr @01mvp/product#test
vpr @01mvp/product#db:migrate
vpr @01mvp/web#docs:check-links

进入 products/01mvp 后,可以省掉 package 名:

cd products/01mvp
vpr dev
vpr test
vpr db:migrate

只改了一个 package,就直接跑那个 package 的脚本:

vpr @01mvp/api#test
vpr @01mvp/db#type-check
vpr @01mvp/i18n#sync

Monorepo 任务

Vite Plus 理解 workspace package 之间的依赖关系。常见写法:

vp run -r test
vp run -t @01mvp/web#build
vp run --filter "@01mvp/*" --filter "!@01mvp/product" type-check

含义:

写法含义适合场景
vp run -r <script>所有定义了这个 script 的 workspace package 都运行全仓测试、全仓构建
vp run -t <pkg>#<script>运行目标 package 和它的 workspace 依赖构建 app 前先构建依赖
vp run --filter <pkg> <script>选择一个或多个 package 运行脚本精确验证某个产品或 package

01MVP 的产品级脚本保留在 products/01mvp/package.json,因为数据库、i18n、部署和 E2E 都有产品语义。你可以把它理解成“产品命令中心”。

01MVP web 的 build 脚本现在会委托给 apps/web/scripts/run-web-command.mjs。package.json 里只保留短入口,真正的步骤放进脚本文件里,方便阅读和维护。

什么时候用产品脚本

下面这些任务优先用 @01mvp/product

vpr @01mvp/product#dev
vpr @01mvp/product#build
vpr @01mvp/product#test
vpr @01mvp/product#db:generate
vpr @01mvp/product#db:migrate
vpr @01mvp/product#i18n:sync
vpr @01mvp/product#deploy:cf

原因很简单:这些命令通常不只是调用一个工具,还会加载产品级 env、生成代码、处理迁移或连接特定部署平台。

下面这些任务可以直接用 Vite Plus 内建命令:

vp install
vp check
vp check --fix
vp test
vp test watch
vpx shadcn@latest

常见误区

下一步

这篇文档有问题?