Upgrading Vite+
Use vp upgrade to update the global vp binary, and use Vite+'s package management commands to update the local vite-plus package in a project.
Overview
There are two parts to upgrading Vite+:
- The global
vpcommand installed on your machine - The local
vite-pluspackage used by an individual project
You can upgrade both of them independently.
Global vp
vp upgrade # upgrade to the latest version
vp upgrade --check # check for updates without installing
vp upgrade <version> # install a specific version
vp upgrade --registry <registry> # use a custom npm registryRollback
Vite+ keeps the 3 most recent versions installed so you can revert quickly:
vp upgrade --rollbackOlder versions are pruned automatically after each upgrade. The active version and the previous version are always kept, so a rollback target is never removed.
Local vite-plus
Update the project dependency with the package manager commands in Vite+:
vp update vite-plusYou can also use vp add vite-plus@latest if you want to move the dependency explicitly to the latest version.
Updating Aliased Packages
Vite+ sets up an npm alias for its core package during installation:
viteis aliased tonpm:@voidzero-dev/vite-plus-core@latest
vp update vite-plus does not re-resolve this alias in the lockfile. To fully upgrade, update it separately:
vp update @voidzero-dev/vite-plus-coreOr update everything at once:
vp update vite-plus @voidzero-dev/vite-plus-coreYou can verify with vp outdated that no Vite+ packages remain outdated.
Updating the Vitest Pin
If you migrated with vp migrate, your project pins vitest to an exact version so the whole project shares a single Vitest copy with the bundled vp test runner. The pin lives in your package manager's override block:
- npm / Bun: a
vitestentry underoverridesinpackage.json - Yarn: a
vitestentry underresolutionsinpackage.json - pnpm: a
vitestentry underoverridesinpnpm-workspace.yaml— unless yourpackage.jsonalready had apnpmfield, in which case it lives underpnpm.overridesinpackage.jsoninstead (pnpm ignorespnpm-workspace.yamloverrides whenpackage.jsondefinespnpm.overrides)
A Vite+ release can bump the bundled Vitest. Because that pin also applies to vite-plus's own vitest dependency, an out-of-date pin keeps installing the previous runner even after you upgrade vite-plus — splitting Vitest's internals (mocks, expect, runner state) between the pinned copy and the one vp test loads.
After upgrading vite-plus, re-pin vitest to the version Vite+ now bundles. Check that version with:
vp --versionThen set the vitest override to that exact version, or rerun vp migrate to update the pin for you.
Preview Builds
Some Vite+ pull requests publish temporary packages through pkg.pr.new. Treat these as nightly or bleeding-edge builds: they are useful when you want to verify a specific fix, test a fresh upstream dependency bump, or confirm a change before the next npm release. For day-to-day work, prefer the published latest release.
You can find preview builds in pull requests that automatically update upstream dependencies. For examples, search the merged pull requests for upstream dependency updates.
Preview builds are addressed by pull request number or commit SHA. They are not a stable version range, and you should avoid leaving them in long-lived branches unless a maintainer asks you to.
Global vp Preview
Install a preview build of the global CLI by passing VP_PR_VERSION to the installer:
curl -fsSL https://vite.plus | VP_PR_VERSION=<pr-or-sha> bashOn Windows:
$env:VP_PR_VERSION = "<pr-or-sha>"
irm https://vite.plus/ps1 | iex
Remove-Item Env:\VP_PR_VERSIONRun vp --version afterward to confirm which build and bundled tool versions are active. When you are done testing, return to the published release with vp upgrade --force or by running the installer again without VP_PR_VERSION.
Local vite-plus Preview
To test an unreleased local package in a project, update the project dependency and any Vite+ alias or override before installing. Use the same pull request number or commit SHA for every preview URL:
vite-plusshould point athttps://pkg.pr.new/voidzero-dev/vite-plus@<pr-or-sha>- any direct
vitealias or direct@voidzero-dev/vite-plus-coredependency should point athttps://pkg.pr.new/voidzero-dev/vite-plus/@voidzero-dev/vite-plus-core@<pr-or-sha> - any
viteoverride or resolution should point at that same core preview URL
For npm and Bun projects, update the relevant package.json entries:
{
"devDependencies": {
"vite-plus": "https://pkg.pr.new/voidzero-dev/vite-plus@<pr-or-sha>",
"vite": "https://pkg.pr.new/voidzero-dev/vite-plus/@voidzero-dev/vite-plus-core@<pr-or-sha>"
},
"overrides": {
"vite": "https://pkg.pr.new/voidzero-dev/vite-plus/@voidzero-dev/vite-plus-core@<pr-or-sha>"
}
}Only include the direct vite entry if your project already has one. If your project has @voidzero-dev/vite-plus-core directly instead, update that package spec to the same core preview URL.
For pnpm workspaces, make the same temporary override change in pnpm-workspace.yaml if that is where your Vite+ overrides live:
overrides:
vite: 'https://pkg.pr.new/voidzero-dev/vite-plus/@voidzero-dev/vite-plus-core@<pr-or-sha>'For Yarn projects, update resolutions instead:
{
"resolutions": {
"vite": "https://pkg.pr.new/voidzero-dev/vite-plus/@voidzero-dev/vite-plus-core@<pr-or-sha>"
}
}Then install once:
vp installAfter installing a preview, check the bundled versions with vp --version. If the preview includes a newer bundled Vitest, update your vitest override to that exact version so vp test and project imports keep using the same Vitest copy.
When testing is complete, restore every preview spec first: set vite-plus back to latest, and set any direct vite / @voidzero-dev/vite-plus-core dependency plus any vite override or resolution back to npm:@voidzero-dev/vite-plus-core@latest. Then reinstall:
vp install