vite-plus v0.2.8: monorepo target resolution, breaking VP_* environment variable renames, and install fixes
LatestBare vp dev/build/preview/pack at a monorepo root now resolve a target package instead of silently running against the root, and three Vite+-specific environment variables move to the VP_* prefix without compatibility aliases. Two failures that broke Vite+ before it could run are also fixed: the crash on container images that ship no CA certificates, and the missing Rolldown binding under pnpm's global virtual store.
Breaking Changes
-
Rename three Vite+-specific environment variables to the
VP_*prefix, with no compatibility aliases, so the old names stop working (#2312), by @jong-kyung:Old New VITE_LOGVP_LOGVITE_GLOBAL_CLI_JS_SCRIPTS_DIRVP_GLOBAL_CLI_JS_SCRIPTS_DIRVITE_UPDATE_TASK_TYPESVP_UPDATE_TASK_TYPESUpdate any shell profile, CI job, or Dockerfile that sets the old names.
Highlights
- Resolve a target package for
vp dev,build,preview, andpackat a monorepo root: interactive shells get a fuzzy package picker, non-interactive runs list the candidates and exit 1 instead of building the root, and a new global-C <dir>flag or adefaultPackagesetting (a single directory, or an object mapping each of the four commands to its own directory) skips the prompt (#2031, #2305), by @fengmk2 - Stop aborting with exit 134 on container images that ship no CA certificates (Debian slim, distroless): the shared HTTP client now retries once with the bundled Mozilla root list, like Node's own bundled roots, and reports a real error instead of panicking when it still cannot be built (#2273, #2295), by @jbmusso and @fengmk2
- Resolve the bundled Rolldown binding through platform packages instead of an undeclared require back into
vite-plus, fixingCannot find module 'vite-plus/binding'under pnpmenable-global-virtual-storeand in standalone@voidzero-dev/vite-plus-coreinstalls (#2313), by @fengmk2 - Add
vp pm cifor reproducible frozen-lockfile installs, andvp pm patch/vp pm patch-commitfor editing dependencies in place on pnpm, bun, and Yarn Berry (npm and Yarn Classic warn and exit successfully) (#2082, #2308), by @forehalo and @jong-kyung
Features
- Upgrade the bundled toolchain: vite
8.1.5->8.2.0, rolldown1.2.0->1.2.2, oxlint1.75.0->1.76.0, oxfmt0.60.0->0.61.0, and Vite DevTools0.4.5->0.4.10(#2302, #2311), by @voidzero-guard[bot]. The new oxfmt and oxlint can flag code that passed before, so runvp fmtafter upgrading if your CI runsvp check. - Read the Node.js version from
.nvmrcwhen no other version source is present (#2244), by @BlankParticle - Support pnpm v12, which ships as a native binary: Vite+ now downloads the platform-specific
@pnpm/exe.*package and generates native shims, sopnpmandpnpxwork instead of failing to exec (#2289), by @jong-kyung - Verify the downloaded bun platform tarball against the registry
dist.integrityhash (#2310), by @jong-kyung
Fixes & Enhancements
- Let
vp configinstall the Git hook dispatcher without creating or modifying project hook scripts or staged-file configuration, so a custom.vite-hooks/pre-commitsurvives (#2280), by @TheAlexLichter - Nest immutable global package installs under
packages/<package>/<uuid>instead of using#in the path, which Node treated as a URL fragment and which broke dynamic imports inside installed packages (#2222), by @liangmiQwQ - Keep the recorded version spec on global installs, so
vp update -gfollows a dist tag or range instead of silently resolving back tolatest,vp outdated -greports Wanted versus Latest, andvp update -g --latestexplicitly moves packages back tolatest(#2249), by @TheAlexLichter - Stop deleting a managed Node.js runtime that another process is concurrently installing (#2248), by @shulaoda
- Preserve the real exit code when a spawned process is terminated by a signal on Unix (#2154), by @liangmiQwQ
- Honor an explicit
vp create --package-manageroutside monorepos instead of inheriting the manager from a non-monorepo ancestor directory (#2226), by @jong-kyung - Scaffold the
vite:librarytemplate into a directory that contains only.git, while still refusing to overwrite existing user files (#2287), by @RSS1102 - Render help for delegated commands from the local CLI, so
vp <command> --helpmatches the installed toolchain instead of drifting (#2184), by @liangmiQwQ - Resolve
typeAwareandtypeCheckoptions inherited through Oxlintextends, sovp check --no-lintruns and classifies type checking correctly (#2228), by @jong-kyung - Report
(no version)instead ofunknownwhen globally installing a local package that has noversionfield (#2232), by @liangmiQwQ
Refactor
- Rename the Git hooks environment variable to
VP_GIT_HOOKS, keepingVITE_GIT_HOOKSworking as a deprecated alias (#2195), by @dennybiasiolli - Consolidate the package manager infrastructure so typed command arguments are the source of truth for per-manager compatibility (#2140), by @forehalo
- Generate the Zed language settings from a language list instead of 17 near-identical blocks (#2294), by @jong-kyung
- Share the agent-file detect and write traversal helpers so both passes apply identical rules (#2296), by @jong-kyung
- Drop redundant clippy allow attributes in the global CLI (#2235), by @shulaoda
Docs
- Avoid a duplicate
vpinstallation step in the onboarding prompt (#2291), by @Arcadi4 - Recommend stacked pull requests for submitting changes (#2281), by @fengmk2
- Correct stale delegation comments in the global CLI (#2236), by @shulaoda
- Improve the release draft review guidance in the release-manager skill (#2285), by @wan9chi
Chore
- Stop emitting unmet peer warnings for the
vite-pluspeer of oxfmt and oxlint on every install (#2321), by @fengmk2 - Remove duplicate direct dependency declarations so each build dependency is owned by one workspace (#2318), by @jong-kyung
- Declare
@emnapipeers where@napi-rs/cliis used (#2319), by @jong-kyung - Exclude
rollup-testsfrom the workspace and updatebasic-ftp(#2322), by @fengmk2 - Remove unused
EnvConfigfields (#2320), by @jong-kyung - Remove the obsolete peer dependency merger tool (#2303), by @jong-kyung
- Stop the staging deploy from triggering on external pull requests (#2293), by @BlankParticle
- Kill the real
vpprocess, and kill it before its children, in theenv_install_interruptsnapshot test (#2299, #2316), by @fengmk2 - Suppress racy optimizer logs in the
vitest_browser_modesnapshot test (#2297), by @fengmk2 - Remove the obsolete auto-install environment from the snapshot tests (#2163), by @liangmiQwQ
Bundled Versions
| Tool | Version | Source |
|---|---|---|
| vite | 8.2.0 |
fa79f9a |
| rolldown | 1.2.2 |
872b98a |
| tsdown | 0.22.14 |
npm |
| vitest | 4.1.10 |
npm |
| oxlint | 1.76.0 |
npm |
| oxlint-tsgolint | 7.0.2001 |
npm |
| oxfmt | 0.61.0 |
npm |
Upgrade
vp upgradeNew Contributors
@jbmusso, @Arcadi4, @dennybiasiolli, @RSS1102
Full Changelog: v0.2.7...v0.2.8
Published Packages
@voidzero-dev/vite-plus-core@0.2.8vite-plus@0.2.8
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.2.8 vp buildRun any vp command without installing it; see the Docker guide for more.