vp env now manages Node.js and package-manager versions together. This release also fixes TanStack Start routing and stale Vitest aliases.
Breaking Changes
Package-manager setup
Vite+ replaces Corepack with managed npm, pnpm, yarn, and bun commands. It removes the corepack shim and legacy global package-manager installations (#2391), by @liangmiQwQ.
Replace Corepack setup commands in shell profiles, CI jobs, and Dockerfiles:
| Previous setup | Replacement |
|---|---|
corepack enable
| vp env setup
|
vp install -g pnpm@<version>
| vp env default pnpm@<version>
|
vp install -g yarn@<version>
| vp env default yarn@<version>
|
vp install -g bun@<version>
| vp env default bun@<version>
|
vp install -g corepack
| Use the managed package-manager commands directly |
Use vp env pin <manager>@<version> to set a project version.
vp env command scope and JSON output
Unscoped vp env commands now operate on Node.js and package managers. Package managers support independent defaults, project pins, session overrides, and installation commands (#2398), by @liangmiQwQ.
Add node to limit an operation to Node.js, for example, vp env off node or vp env unpin node. Bare versions, such as vp env default 22.19.0, still select Node.js.
Update scripts that read JSON output:
| Command | New output structure |
|---|---|
vp env current --json
| node and package_manager objects
|
vp env list --json, vp env list-remote --json
| node and package_managers groups
|
See the environment guide.
vp pack migration to tsdown@0.23
vp pack now uses tsdown@0.23, which removes deprecated options and changes defaults (#2614), by @fengmk2.
- Run
vp migrateto update supported static configurations and package scripts, including projects that already use Vite+. - Check migration warnings in
vite.config.*,tsdown.config.*, andpackage.json. - Update dynamic configurations manually. Arrays built with
.map()require manual changes, even when migration reports no warning. - Run
vp packto check the result.
| Previous option | Replacement |
|---|---|
bundle: false
| unbundle: true
|
outExtension
| outExtensions
|
publicDir / --public-dir
| copy / --copy
|
removeNodeProtocol: true
| nodeProtocol: 'strip'
|
injectStyle
| css.inject
|
inlineOnly / deps.onlyAllowBundle
| deps.onlyBundle
|
noExternal
| deps.alwaysBundle
|
skipNodeModulesBundle: true / deps.skipNodeModulesBundle: true
| deps.neverBundle: true
|
dts.tsgo: true / dts.oxc: true
| dts.generator: 'tsgo' / dts.generator: 'oxc'
|
Migration preserves the previous defaults for dependency resolution and ATTW.
tsdown no longer supports Node.js 25. Use Node.js ^22.18.0, ^24.11.0, or >=26.0.0. The programmatic build() API now returns { bundles, watch }.
See the complete migration guide for declaration and TypeScript module-resolution changes.
CLI argument validation
vp staged, vp config, vp hooks, vp migrate, and vp create now reject unsupported options and extra positional arguments (#2523), by @fengmk2.
Remove unsupported arguments from scripts. For example, replace vp config --hooks-only with vp config --no-agent.
Highlights
- Fix TanStack Start HTTP
404responses caused by separate Vite runtime copies (#2617), by @fengmk2. - Reduce the Windows
vp-shim.exesize from214 KiBto14 KiB(#2466), by @fengmk2. - Add
vp check --quietto hide lint warning diagnostics while retaining errors and summary counts (#2593), by @RSS1102.
Features
- Add
vp sync-versions --jsonso automation can request dependency alignment plans from manifest snapshots without changing project files (#2600), by @afonsojramos. - Make
vp create --gitsuggest an initial commit command after Git initialization (#2581), by @fengmk2. - Make
vp migratereplace frozenvoidzero-dev/setup-vp@v1workflow references with the supported version pin (#2540), by @fengmk2. - Upgrade
rolldownfrom1.2.5to1.2.7,tsdownfrom0.22.14to0.23.0, and Oxc from0.146.0to0.148.0. Upgradeoxlintfrom1.79.0to1.81.0andoxfmtfrom0.64.0to0.66.0. These versions can flag code that passed before. Runvp fmtafter upgrading if CI runsvp check(#2580, #2613), by @voidzero-guard[bot].
Fixes & Enhancements
- Resolve package-manager versions without rewriting
package.json. Usevp env pinorvp env unpinto change project declarations explicitly (#2399), by @liangmiQwQ. - Let
vp migraterepair stalevitestaliases that previously prevented the CLI from starting (#2605), by @fengmk2. - Keep Vite DevTools within the version ranges supported by the bundled Vite (#2559), by @fengmk2.
- Keep automatic Vitest upgrades on the supported
4.xmajor (#2612), by @fengmk2. - Remove a deprecated
tsdownoption from the prompts package build (#2597), by @jong-kyung.
Refactor
- Use the updated
whichdependency to resolve relativePATHentries (#2583), by @RSS1102. - Remove the unused
async-traitannotation fromJsRuntimeProvider(#2538), by @jong-kyung.
Docs
- Add Azure Pipelines setup instructions (#2553), by @naokihaba.
- Correct Zed Oxc formatter settings and include JSX and TSX (#2592), by @joschuba.
- Add Wrangler deployment configuration for the documentation site (#2596), by @mdong1909.
- Explain conflicts between pnpm and Vite+ runtime management, including the
runtimeOnFailsetting (#2620), by @liangmiQwQ.
Chore
- Run CLI snapshots without published release packages (#2625), by @fengmk2.
- Update the release-manager skill with package-install checks, changelog guidance, and announcement handling (#2548), by @fengmk2.
- Wait for npm dependencies to become available before publishing dependent release packages (#2601), by @fengmk2.
- Remove old Docker preview images (#2539), by @fengmk2.
- Stabilize external-tool snapshots and isolate npm network cases (#2577, #2604), by @fengmk2.
- Avoid unreliable Fish PPA setup in CI (#2560), by @fengmk2.
- Update the
vinextfixture to an upstream fix (#2571), by @jong-kyung. - Stabilize the pnpm snapshot and Nuxt build in CI (#2591), by @voidzero-guard[bot].
- Pin pnpm in project-creation build-approval fixtures (#2616), by @liangmiQwQ.
- Remove unused documentation components, assets, and the typewriter dependency (#2550, #2562), by @jong-kyung.
- Remove duplicate
tempfiledependencies, an unused runtime helper, and unused error variants. Update theunit_bindingslint name (#2555, #2558, #2566, #2567), by @jong-kyung. - Update GitHub Actions dependencies, including
actions/setup-nodev7(#2544, #2545, #2582, #2618), by @renovate[bot]. - Update
crate-ci/typosthroughv1.50.1(#2584, #2589, #2609), by @renovate[bot]. - Update repository pnpm to
11.24.0(#2590), by @renovate[bot]. - Update
voidzero-dev/setup-vptov1.19.0(#2619), by @renovate[bot].
Bundled Versions
| Tool | Version | Source |
|---|---|---|
vite
| 8.2.2
| de1111a
|
rolldown
| 1.2.7
| 26b4c6e
|
tsdown
| 0.23.0
| npm |
vitest
| 4.1.11
| npm |
oxlint
| 1.81.0
| npm |
oxlint-tsgolint
| 7.0.2001
| npm |
oxfmt
| 0.66.0
| npm |
Upgrade
vp upgradeNew Contributors
Full Changelog: v0.3.0...v0.3.1
Published Packages
@voidzero-dev/vite-plus-core@0.3.1vite-plus@0.3.1
Installation
macOS/Linux:
curl -fsSL https://vite.plus | bashWindows:
irm https://vite.plus/ps1 | iexOr download and run vp-setup.exe from the assets below.
Docker:
docker run --rm -it -v "$PWD:/app" -w /app ghcr.io/voidzero-dev/vite-plus:0.3.1 vp buildRun any vp command without installing it; see the Docker guide for more.