Migrate or align frontend repositories to the stock Vite+ workflow. Use when standardizing package or monorepo repos around `vp`, `voidzero-dev/setup-vp`, `vite-plus/test`, and Vite+ native CI, test, packaging, and hook flows, including Vite+ 0.2.x Vitest-wrapper cleanup.
84
89%
Does it follow best practices?
Impact
80%
1.40xAverage score across 6 eval scenarios
Passed
No known issues
Move a frontend repo closer to the stock Vite+ toolchain while preserving repo-specific release and runtime logic. Vite+ is in beta, but still pre-1.0: verify behavior against installed vp --version, packaged docs under node_modules/vite-plus/docs/, and the latest release notes instead of relying on memorized command shapes.
Default to this destination unless a repo-specific boundary clearly blocks it. If you keep an old command shape, document the reason.
voidzero-dev/setup-vp; the action owns Node and package-manager bootstrap. Let its default run-install: true run vp install, then run vp check, vp test, and vp build; set run-install: false only when the workflow needs an explicit install step. In repos that pin GitHub Actions, pin setup-vp to a full commit SHA with a same-line exact version comment and let Dependabot maintain it.node-version; package-manager versions come from package.json#packageManager; Vite+ comes from the repo's vite-plus dependency or workspace catalog. Do not repeat Node, pnpm, or Vite+ literals in workflows when a source file can be readvite-plus/test (and vite-plus/test/browser/context for browser mode); Vite+ 0.2.x runs upstream Vitest directly and no longer uses @voidzero-dev/vite-plus-testvp dev, vp test, vp test watch, vp test run --coverage, vp pack, vp build, vp preview, and vp run <script> (or vpr <script>) over direct package-manager, raw Vitest, or tsdown wiringvp config, .vite-hooks, and vp staged as the default hook stackvite.config.ts: no parallel vitest.config.ts, .oxlintrc*, .oxfmtrc*, or tsdown.config.tsvp migrate --agent <name> writes the official short AGENTS.md/CLAUDE.md block, and installed projects may expose the same guidance at node_modules/vite-plus/AGENTS.mdvp commands in the same change@vitest/*, Vitest 4.1+.vp create, vp migrate), editor/agent config, local guidance-file discovery, and validation path.vite.config.ts, test imports, hooks, and packaging together. Verify with vp check && vp test before moving on.vp upgrade updates the global CLI; then run vp migrate in the project. On an existing Vite+ project it defaults to a version-only upgrade: it re-pins vite-plus, the required vite -> @voidzero-dev/vite-plus-core alias, and Vitest-related pins across workspace packages. Use vp migrate --full only when you also want the first-time setup bucket (hooks, editor files, agent files, lint migration). Confirm with vp --version, lockfile inspection, and vp outdated.vp install && vp check && vp test, then verify vp build or vp pack artifacts, vp preview where applicable, vp test run --coverage, and vp staged on a staged change.Before changing CI, preserve one canonical version owner:
.node-version; wire it through node-version-file: ".node-version"package.json#packageManagervite-plus dependency or workspace catalog; when CI needs an explicit version, derive it from that source with a structured parservite manifest dependency plus package-manager override/catalog/resolution pointed at the matching npm:@voidzero-dev/vite-plus-core@<version>vitest override for node-mode-only Vite+ 0.2.x projects; add direct Vitest and @vitest/* packages only when the project uses Vitest APIs, coverage packages, UI, or browser providers directlyghcr.io/voidzero-dev/vite-plus toolchain image; do not use it as a production runtime imageConcrete shapes:
- uses: voidzero-dev/setup-vp@<full-sha> # v1.x.y
with:
node-version-file: ".node-version"
cache: true
- run: vp check
- run: vp test
- run: vp buildimport { defineConfig } from 'vite-plus'
export default defineConfig({
lint: {
options: { typeAware: true, typeCheck: true },
},
staged: {
"*.{js,ts,tsx,vue,svelte}": "vp check --fix",
},
})# package.json scripts
-"test": "vitest run --coverage",
-"test:watch": "vitest",
+"test": "vp test run --coverage",
+"test:watch": "vp test watch",vp create / vp migrate --agent <name> --editor <name> over hand-rolling agent or editor config.node-version:, pnpm@, corepack prepare, and inline version: "0.. Keep action pins separate: GitHub Action SHAs and their same-line version comments are allowed because they identify the action, not the project toolchain.vp run tasks, rely on automatic file tracking first. A standard vp build task now reports Vite inputs, outputs, and relevant env metadata to Vite Task, so do not add manual input, output, or env config unless the project has behavior Vite cannot report.vp check is not running type-aware lint or type checks, confirm lint.options.typeAware and lint.options.typeCheck in vite.config.ts, and check for compilerOptions.baseUrl in tsconfig.json — tsgolint does not support baseUrl and Vite+ silently skips type-aware checks when it is present.See references/known-issues.md for current upstream caveats (single-file vp check --fix, SSR instanceof failures, Cloudflare Workers tests, Vite+ 0.2.x Vitest wrapper removal).