| name | vite-plus |
| description | Guidance for working with Vite+, the unified toolchain for web development that consolidates Vite, Vitest, Oxlint, Oxfmt, Rolldown, tsdown, and Vite Task into a single CLI (`vp`). |
Vite+
Vite+ is The Unified Toolchain for the Web — a single CLI (vp) that replaces the fragmented ecosystem of separate tools (Vite, Vitest, ESLint, Prettier, lint-staged, etc.) with an integrated, zero-configuration platform. It is developed by VoidZero and is MIT-licensed.
Core Tooling Bundled
| Tool | Purpose |
|---|
| Vite + Rolldown | Dev server and production bundling |
| Vitest | Testing (Jest-compatible API) |
| Oxlint | Linting (~50–100× faster than ESLint) |
| Oxfmt | Code formatting (~30× faster than Prettier) |
| tsdown | Library bundling / standalone executables |
| Vite Task | Task runner with caching and monorepo support |
Performance: 40× faster builds than webpack; Rust-based linting and formatting.
Framework support: React, Vue, Svelte, Solid.js, and 20+ others. Supports Vercel, Netlify, Cloudflare, and Render deployments.
Installation
curl -fsSL https://vite.plus | bash
irm https://vite.plus/ps1 | iex
Two packages are installed: vp (global CLI) and vite-plus (local project package).
CLI Commands
Project Setup
vp create
vp create <template>
vp create <template> -- <opts>
vp migrate
vp migrate <path>
vp install
vp add <pkg>
vp update
vp outdated
Built-in templates: vite:monorepo, vite:application, vite:library, vite:generator
Shorthand templates: vite, @tanstack/start, svelte, next-app, nuxt, react-router, vue
Remote templates: github:user/repo or full GitHub URLs
vp create flags: --directory, --agent, --editor, --hooks/--no-hooks, --no-interactive, --verbose, --list
Development
vp dev
vp check
vp check --fix
vp lint
vp lint --fix
vp lint --type-aware
vp fmt
vp test
vp test watch
vp test run --coverage
Build & Preview
vp build
vp build --watch
vp build --sourcemap
vp preview
vp pack
vp pack src/index.ts --dts
vp pack --watch
Use vp build for web apps and vp pack for publishable libraries.
Task Execution
vp run <task>
vp run
vp run --cache build
vp run @my/app#build
vp run -r build
vp run -t build
vp run --filter <glob>
vp run -v
vp run --last-details
vp exec <bin>
vp dlx <pkg>
Caching: package.json scripts are not cached by default; tasks defined in vite.config.ts are cached by default. Cache hits replay previous output; cache misses occur when inputs change.
Environment & Maintenance
vp env on/off
vp env setup
vp env pin
vp env default
vp env install/uninstall
vp env use
vp env current
vp env which
vp env list-remote
vp env print
vp upgrade
vp implode
vp config
vp staged
Configuration
All configuration lives in a single vite.config.ts file. Use defineConfig from vite-plus:
import { defineConfig } from 'vite-plus';
export default defineConfig({
server: { ... },
build: { ... },
preview: { ... },
test: {
include: ['src/**/*.test.ts'],
},
lint: {
typeAware: true,
typeCheck: true,
},
fmt: { ... },
run: { ... },
pack: {
dts: true,
},
staged: {
'*.{js,ts,tsx,vue,svelte}': 'vp check --fix',
},
});
Key rule: Do NOT use separate config files like oxlint.config.ts, .oxlintrc.json, vitest.config.ts, tsdown.config.ts, or lint-staged config. Everything belongs in vite.config.ts.
Test imports: use 'vite-plus/test' instead of 'vitest' after migration.
Task Definitions in vite.config.ts
Tasks defined in run are cached by default and support dependency ordering:
run: {
tasks: {
build: {
command: 'vp build',
dependsOn: ['typecheck'],
},
typecheck: {
command: 'tsc --noEmit',
cache: true,
},
},
},
Migration from Existing Vite Projects
Pre-requisites: upgrade to Vite 8+ and Vitest 4.1+ first.
vp migrate
vp install
vp check
vp test
vp build
vp migrate automatically:
- Updates dependencies
- Rewrites imports
- Merges tool configs into
vite.config.ts
- Updates scripts to
vp commands
Most projects require manual adjustments after automated migration.
CI Integration
Use the voidzero-dev/setup-vp GitHub Action:
- uses: voidzero-dev/setup-vp@v1
with:
node-version: "22"
cache: true
- run: vp install
- run: vp check
- run: vp test
- run: vp build
This single action replaces separate steps for Node.js setup, package manager config, and cache management.
Key Differences from Standard Vite
| Concern | Standard Vite | Vite+ |
|---|
| Entry point | vite CLI | vp CLI |
| Testing | Separate Vitest setup | vp test (integrated) |
| Linting | ESLint + config files | vp lint (Oxlint, config in vite.config.ts) |
| Formatting | Prettier + config | vp fmt (Oxfmt, config in vite.config.ts) |
| Library bundling | Manual rollup/tsup | vp pack (tsdown) |
| Node.js management | External (nvm, fnm) | vp env (built-in) |
| Task running | npm scripts only | vp run (cached, monorepo-aware) |
| Config files | Many separate files | Single vite.config.ts |
| Combined checks | Run tools separately | vp check (fmt+lint+typecheck in one pass, 2× speedup) |
Commit Hooks
Set up with vp config. Hooks stored in .vite-hooks. Staged checks run automatically on commit via vp staged, configured in the staged block of vite.config.ts.