Setup prompt

I want to use Vite+ in my project. Vite+ is the unified toolchain for the web behind the `vp` CLI — one tool combining Vite, Rolldown, Vitest, tsdown, Oxlint, Oxfmt, and Vite Task, plus runtime and package-manager management.

First, read https://viteplus.dev/llms-full.txt and https://viteplus.dev/guide to learn Vite+'s commands and configuration. Inspect the worktree and preserve unrelated changes. Determine whether I want a new project or want to migrate or upgrade an existing project. Follow only the matching flow below.

For a new project:

Read https://viteplus.dev/guide/create and choose the template, target directory, package manager, and intended Vite+ release or preview for my project. Use the target CLI's `help create` output to select supported options. Scaffold with `vp create`; do not overwrite existing project files.

A global installation is optional. To install the global `vp` CLI when it is not already available:
- macOS / Linux: curl -fsSL https://vite.plus | bash
- Windows (PowerShell): irm https://vite.plus/ps1 | iex

Open a new terminal after installation. Follow https://viteplus.dev/guide/upgrade to select the target release or preview and check `vp toolchain --global` before scaffolding.

Without a global installation, use a supported Node.js runtime from the compatibility guide. For the 1.0.0-rc.0 release, run `pnpm dlx --package=vite-plus@1.0.0-rc.0 vp create` or `npx --package=vite-plus@1.0.0-rc.0 vp create`. Replace 1.0.0-rc.0 with the intended release version. For a preview, use the version from its PR and pass `--registry=https://registry-bridge.viteplus.dev` to pnpm or npx before the vp command.

Run `vp install`, `vp check`, and `vp test`, then `vp build` for applications or `vp pack` for libraries. Without a global CLI, install with the project's package manager and run the local CLI through it, such as `pnpm exec vp check` or `npm exec -- vp check`. Explain how to use `vp dev` for the dev server and `vp run <task>` for project scripts or tasks. Report the setup changes, validation results, and any remaining work. Do not commit or push unless I ask.

For an existing project, including one that already uses Vite+, follow these migration or upgrade instructions:

Migrate this project to Vite+ while preserving its application, test, and library build behavior.

Read these guides before making changes:

- https://viteplus.dev/guide/migrate
- https://viteplus.dev/guide/migrate-rules
- https://viteplus.dev/guide/vitest-v5
- https://vitest.dev/guide/migration/
- https://github.com/rolldown/tsdown/releases/tag/v0.23.0

Inspect the worktree and preserve unrelated changes. Identify the workspace root, package manager, scripts, configuration files, and tools in use. If the project already uses Vite+, follow the upgrade flow in the migration guide and keep the existing setup; do not use --full unless I request it.

For a project that does not use Vite+ yet, check the prerequisites for the tools it uses: Vite 8+ and Vitest 4.1+. Complete any required upstream upgrades and validate them before starting the Vite+ migration. Then keep those manifests, lockfile, and installed packages available so the migrator can identify the original Vitest version. Do not install vite-plus or upgrade Vitest to the target's bundled version before running migration.

Use the CLI from the target Vite+ 1.0 release or its preview build. Use a supported Node.js runtime from the compatibility guide. A global installation is optional:

- With a global vp installation, follow https://viteplus.dev/guide/upgrade to select the target release and check `vp toolchain --global`. Run `vp help` and `vp help migrate`, then `vp migrate --no-interactive` from the workspace root.
- Without a global installation, run the target CLI through the package manager from the workspace root. For the 1.0.0-rc.0 release, use `pnpm dlx --package=vite-plus@1.0.0-rc.0 vp migrate --no-interactive` or `npx --package=vite-plus@1.0.0-rc.0 vp migrate --no-interactive`. First run the same command with `help migrate` instead of `migrate --no-interactive` to read its help. These commands fetch the target CLI without replacing the old project dependencies first.

Replace 1.0.0-rc.0 with the intended release version. For a preview, use the version from its PR and pass `--registry=https://registry-bridge.viteplus.dev` to pnpm or npx before the vp command.

Do not run migration with an old project's node_modules/.bin/vp. Migrate monorepos from the workspace root so shared manifests, catalogs, overrides, and lockfiles remain consistent.

Resolve BLOCK findings and rerun migration. Review every REVIEW finding and manual-migration warning using the linked guidance, even if migration exits with success. Keep the generated Vitest v4 and tsdown <0.23 compatibility settings and comments for the first validation run.

Review the resulting changes against the migration rules:

- Confirm Vite and test imports use the supported vite-plus and vite-plus/test* entries. Keep type augmentations on their upstream module identities and the community WebDriverIO provider on @vitest/browser-webdriverio.
- Preserve dependencies, aliases, catalogs, and overrides configured by the migrator. On pnpm, keep the configured vite and vitest entries. Retain upstream packages when the migration rules require them.
- Move remaining tool-specific configuration into the appropriate blocks in vite.config.ts. Review manual follow-up for lint, formatting, packaging, and hooks without discarding project-specific behavior.
- Distinguish built-ins from tasks: `vp dev` and `vp test` run built-in tools; `vp run dev` and `vp run test` run the corresponding project scripts or tasks. The packageManager field selects the package manager used by `vp install`, `vp add`, and `vp remove`.

Run `vp install`, `vp check`, and `vp test`, plus configured browser, coverage, and benchmark suites. Run `vp build` for applications and `vp pack` for libraries, including both where the workspace contains both. Check library consumers against emitted imports and declarations. Without a global CLI, install with the project's package manager and invoke the updated local CLI through it, such as `pnpm exec vp check` or `npm exec -- vp check`. Fix failures without weakening assertions or dropping test coverage.

After establishing a passing baseline, try to remove the generated "Vitest v4 compatibility" settings with no code changes or small, localized fixes:

1. Use the migration diff and generated comments to identify additions in root, workspace, and inline project configs. Read each linked explanation and check the effective setting after removal, including inherited values. Preserve pre-existing user settings and settings whose origin is unclear.
2. Remove one added setting at a time and first run the affected projects and suites without code changes. If needed, make small, localized application, test, or setup fixes that preserve test intent, such as correcting a locator or adjusting mock setup in a few tests. Do not weaken assertions, accept snapshot changes without review, or reduce the test set. For fakeTimers.toNotFake, remove only the added Temporal entry and preserve other exclusions. Do not weaken coverage enforcement: retain glob-threshold perFile: true unless I approve aggregate checking, even if coverage passes.
3. Keep a removal only when the affected tests pass and still execute the same tests without new skips. Remove that setting's generated comment too. If removal requires widespread test edits or shared setup refactoring, keep compatibility for now and report the follow-up work. Restore the setting and its comment if validation still fails, cannot run, or leaves uncertainty about behavior. Undo only cleanup-specific trial edits; preserve completed migration fixes and unrelated work.
4. Run the full validation commands again with the accepted removals together. Report each candidate's config path, removed or retained status, code changes, commands and results, and the reason for retaining it. Distinguish a deferred rewrite from a setting you could not validate.

For projects that use vp pack, also review the generated "tsdown <0.23 compatibility" settings after a passing library build. Use the migration diff and linked comments to distinguish inserted settings from pre-existing user choices. Removing deps.resolveDepSubpath: true preserves external subpath imports as written; check that consumers can still resolve the emitted imports. Removing attw.profile: 'strict' adopts the esm-only profile, which skips node10 and CommonJS resolution checks. Keep strict if those checks are part of the package's intended support. Do not drop intended declaration checks merely to make a build pass. Remove one setting and its generated comment at a time, then run vp pack and the package's consumer checks. Restore the setting and comment if validation fails or the required consumer behavior is unclear. Report which settings remain and why.

Report the migration changes, validation results, retained compatibility settings, and unresolved findings. Do not commit or push unless I ask.
Vite+ Logo

The UnifiedToolchain for the Web

Manage your runtime, package manager, and frontend stack with one tool.

Free and open source under the MIT license.

Getting started

Install vp globally

Install Vite+ once, open a new terminal session, then run vp help.

For CI, use setup-vp .

macOS / Linux
curl -fsSL https://vite.plus | bash
Windows (PowerShell)
irm https://vite.plus/ps1 | iex
Manages your runtime and package manager

Use node automatically, with the right package manager selected for every project.

node
pnpmnpmyarnbun
Simplifies everyday development

One configuration file and one consistent flow of commands across your whole stack.

vp envvp installvp devvp checkvp buildvp run
Powering your favorite frameworks

Supports every framework built on Vite.

    reactvuesveltesolid

+ 20 more

A trusted stack to standardize on

Vite+ is built on established open source industry standards, and maintained by the same experts behind these projects.

Vite

176m+

Weekly npm downloads

82.7k

GitHub stars

Vitest

99m+

Weekly npm downloads

17.1k

GitHub stars

Oxc

19m+

Weekly npm downloads

22.7k

GitHub stars

Stay fast at scale

With low-level components written in Rust, Vite+ delivers enterprise-scale performance: up to 40× faster builds than webpack, ~50× to ~100× faster linting than ESLint, and up to 30× faster formatting than Prettier.

Focus on shipping, not tooling
  • Stop wasting time on tooling maintenance
  • Improve cross-team developer mobility
  • Standardize best practices for humans and AI-assisted workflows
Supply chain security

Vite+ development follows rigorous security practices, and we vet its dependencies across the unified toolchain.

Vite+ vets all dependencies with rigorous security practices

Everything you need in one tool

Vite+ unifies your entire web development workflow into a single, powerful command-line interface.

Vite+ dev & build

Blazingly fast builds

Spin up dev servers and create production builds with extreme speed. Stay in the flow and keep CI fast.

  • Always instant Hot Module Replacement (HMR)
  • 40× faster production build than webpack
  • Opt-in full-bundle dev mode for large apps
  • Huge ecosystem of plugins
Vite
Vite
&
Rolldown
Rolldown
$ vp build
VITE+ building for production
Transformed 128 modules
dist/index.html0.42 kB
dist/assets/index.css5.1 kB
dist/assets/index.js46.2 kB
Built in 421ms
Vite+ check

Format, lint, and type-check in one pass

Keep every repo consistent with one command powered by Oxlint, Oxfmt, and tsgo.

  • Prettier compatible formatting
  • 750+ ESLint compatible rules
  • Type-aware linting and fast type checks with tsgo
  • vp check --fix auto-fixes where possible
Oxc
Oxc / Oxlint
Oxc
Oxc / Oxfmt
$ vp check
pass: All 42 files are correctly formatted (88ms, 16 threads)
pass: Found no warnings, lint errors, or type errors in 42 files(184ms, 16 threads)
Vite+ test

Testing made simple

Feature rich test runner that automatically reuses the same resolve and transform config from your application.

  • Jest compatible API
  • Test isolation by default
  • Browser Mode: run unit tests in actual browsers
  • Coverage reports, snapshot tests, type tests, visual regression tests...
Vitest
Vitest
vp test terminal command
Vite+ run

Vite Task for monorepos and scripts

Run built-in commands and package.json scripts with automated caching and dependency-aware execution.

  • Automated input tracking for cacheable tasks
  • Dependency-aware execution across workspace packages
  • Familiar script execution via vp run
Vite+ pack

Library packaging with best practices baked in

Package TS and JS libraries for npm or build standalone app binaries with a single vp pack command.

  • DTS generation & bundling
  • Automatic package exports generation
  • Standalone app binaries and transform-only unbundled mode
Rolldown
Rolldown
/ tsdown
$ vp pack
CLI Building entry: src/index.ts
CLI Using config: tsdown.config.ts
CLI tsdown 0.14.1 powered by Rolldown
ESM dist/index.js4.8 kB
DTS dist/index.d.ts1.2 kB
Pack completed in 128ms

Fullstack? No problem.

Vite+ can be the foundation of any type of web apps - from SPAs to fullstack meta frameworks.

Meta Frameworks

You can use meta-frameworks that ship as Vite plugins with Vite+

Meta frameworks
Platform Agnostic

First-class support on Vercel, Netlify, Cloudflare & more

Vercel
Netlify
Cloudflare
Render
Nitro icon
Deploy anywhere by pairing with Nitro
Deploy anywhere with Nitro