Releases: voidzero-dev/vite-plus
vite-plus v0.2.1
Restores support for older Node.js (back to 20.19.0) and makes vp exec --fail-if-no-match fail correctly on unmatched filters.
Fixes & Enhancements
- Stop blocking older Node.js versions: v0.2.0 blocked commands when the resolved Node.js version fell outside the declared range. This reverts that enforcement and widens
engines.nodeto^20.19.0 || ^22.18.0 || >=24.11.0, matching Vite's own^20.19.0floor, so older Node that works in practice (e.g. Node 20 in rolldown CI) is no longer rejected (#1865), by @fengmk2 vp exec --fail-if-no-match: exit non-zero when one or more--filterexpressions match no workspace packages. Strict mode previously only warned and returned success, so typoed filters looked successful in CI even though no package command ran (#1859), by @jong-kyung
Bundled Versions
| Tool | Version | Source |
|---|---|---|
| vite | 8.0.16 |
f94df87 |
| rolldown | 1.1.1 |
d7f919c |
| tsdown | 0.22.3 |
npm |
| vitest | 4.1.9 |
npm |
| oxlint | 1.70.0 |
npm |
| oxlint-tsgolint | 0.23.0 |
npm |
| oxfmt | 0.55.0 |
npm |
Upgrade
vp upgradeUpgrading from 0.1.x to 0.2.1 Prompt
You are upgrading a project that uses Vite+ (the `vp` CLI) from v0.1.x to v0.2.1.
v0.2.1 has one breaking change vs v0.1.x: it consumes upstream Vitest directly. The `@voidzero-dev/vite-plus-test` wrapper package is removed; `vitest` now comes in transitively through `vite-plus`.
Do not run `vp migrate` for this upgrade; it is not reliable enough yet. Make the changes yourself by editing the project's files, then verify by running the tools.
How to run vp: if a global `vp` is available, use it. Otherwise this project only ships the local CLI from the `vite-plus` package, so run vp as the project-local binary (for example via the package manager's exec: pnpm exec, npx, yarn, or bunx). After any install, re-resolve vp so you always run the version currently in the project.
Do the following:
1. Set the `vite-plus` dependency to the exact version `0.2.1` and reinstall, so the new toolchain is installed and the lockfile moves off 0.1.x. In a monorepo, do this for every workspace package that depends on `vite-plus`. Changing the spec to `0.2.1` is what moves the lockfile off the old resolution; a reinstall that leaves the spec unchanged would keep the old version.
2. Remove the `@voidzero-dev/vite-plus-test` wrapper from the project. Search everywhere it could appear: package.json, the lockfile, any workspace or catalog config (such as pnpm-workspace.yaml or .yarnrc.yml), and the source files. Then:
- Decide whether the project itself depends on vitest. It does only if a source or test file imports directly from `vitest` or `@vitest/...`, or a `@vitest/*` package is listed in its dependencies (for example a coverage provider). Imports from `vite-plus/test` do NOT count.
- If the project has no such vitest usage (the common case), remove the vitest configuration entirely. In package.json, delete the `vitest` entry from `dependencies` / `devDependencies` in whatever form it takes (a `@voidzero-dev/vite-plus-test` alias, a `catalog:` reference, or a plain version). Also remove the `vitest` entry from every dependency-resolution mechanism in the project: both `overrides` and `resolutions`, pnpm `overrides`/`catalog` (in package.json or pnpm-workspace.yaml), and any catalog entry. If `vitest` appears in more than one of these, remove all of them. Do not add a pinned `vitest`; it arrives transitively through `vite-plus` and the test command still works.
- If the project does use vitest directly, pin upstream vitest to the version bundled with vite-plus (4.1.9 for v0.2.1), and upgrade every vitest ecosystem package the project depends on so the whole tree resolves to a single vitest. Set each `@vitest/*` package the project lists (for example `@vitest/coverage-v8`, `@vitest/ui`, `@vitest/browser`) to that same version (4.1.9), since those are pinned to an exact vitest version. Also update any other vitest integration package (such as `vitest-browser-*`) to a release compatible with that vitest version. Leaving an ecosystem package on an older version pulls in a second copy of vitest, which Vitest rejects at runtime.
- Also delete any dependency-resolution config that existed only to accommodate the wrapper or the old vitest, for example pnpm `peerDependencyRules` entries (`allowedVersions` / `ignoreMissing`) referencing `vitest`, `@vitest/*`, or `@voidzero-dev/vite-plus-test`, and the equivalent peer-tweak config in other package managers (such as yarn `packageExtensions`). Leave rules that are unrelated to vitest or the wrapper untouched.
3. Keep the `vite` -> Vite+ core override (it is still required) and set it to the matching exact version: map `vite` to `npm:@voidzero-dev/vite-plus-core@0.2.1` in whatever override, resolution, or catalog form the project already uses. `@voidzero-dev/vite-plus-core` is released in lockstep with `vite-plus`.
4. Leave imports from `vite-plus/test` (and `vite-plus/test/*`) unchanged; that is the stable public API. Only if a file imports directly from `@voidzero-dev/vite-plus-test`, repoint it to `vite-plus/test`.
5. Reinstall so the lockfile reflects your edits, then verify: confirm that no reference to `@voidzero-dev/vite-plus-test` remains anywhere outside node_modules, confirm the dependency tree resolves to a single `vitest` version (no duplicate copies), run the project's tests and confirm they pass (you will see Vitest's native banner), and run the Vite+ check workflow and confirm it passes.
Constraints:
- Do not run `vp migrate`.
- Do not bypass git hooks. If a pre-existing failure blocks you, report it rather than forcing through.
- Make the smallest set of edits that reaches the end state above; do not reformat unrelated files.
- When done, give me a short summary: old vs new `vite-plus` version, the files you changed, and the test/check results.Full Changelog: v0.2.0...v0.2.1
Published Packages
@voidzero-dev/vite-plus-core@0.2.1vite-plus@0.2.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.
vite-plus v0.2.0
Vite+ now consumes upstream Vitest directly (no wrapper), raises the minimum supported Node.js version to 22.18.0, and ships corepack and devEngines support.
Highlights
vp testnow runs upstream Vitest directly (breaking): Vite+ used to ship@voidzero-dev/vite-plus-test, a rebundled copy of Vitest that lagged upstream releases. That package is removed;vp testnow runs the real upstreamvitest, which is installed automatically as a dependency ofvite-plus(you no longer addvitestor@vitest/*yourself, andvitestill resolves to@voidzero-dev/vite-plus-corevia package-manager overrides). Yourimport ... from 'vite-plus/test'code keeps working unchanged andvp migrateupdates existing projects (#1588), by @Brooooooklyn- Minimum supported Node.js version raised to
^22.18.0 || >=24.11.0(breaking): Node 20 reached end-of-life and the bundled tsdown already required^22.18.0, so the published engines range now matches whatvp packcan actually deliver;vp exec/vp run/vp dlxreject projects resolving an older Node with the existing incompatibility error (#1813), by @fengmk2 - Corepack now works under Vite+:
corepacknow set up by default, socorepack enableand the pnpm/yarn launchers just work, even on Node 25+ which no longer ships it. (#1808), by @fengmk2 - devEngines support for runtime and package-manager selection: Vite+ reads
devEngines.runtime(ranked aboveengines.node) anddevEngines.packageManager; auto-pin andvp migratewritedevEngines.packageManager,vp env pin/unpintargetdevEngines.runtime, andvp env doctorreports conflicts instead of silently resolving them (#1760), by @fengmk2
Features
vp pm approve-builds: forward to npm's newapprove-scripts/deny-scripts(npm >= 11.16.0) instead of the previous no-op, matchingpnpm approve-builds/bun pm trust; mixed approve+deny is rejected with actionable guidance and npm's advisory-only caveat is surfaced (#1733), by @fengmk2vp create: support local monorepo templates declared increate.templatesinvite.config.ts;vp create vite:generatorscaffolds a Bingo generator and auto-registers it in the picker, replacing the old package.json-keyword inference (#1777), by @fengmk2vp create: detect direct dependencies whose build scripts the package manager gated (e.g. native builds likebetter-sqlite3) and act on them; prompt to approve each (default off) interactively, point atvp pm approve-buildsnon-interactively, or build them with--approve-builds(#1828), by @fengmk2vp config: add--no-hooksand--no-agentopt-outs to skip git-hook installation and coding-agent instruction updates (#1842), by @leno23vp list -g: sort the global package list output so entries appear in a stable order (#1748), by @liangmiQwQ- Upgrade upstream dependencies: rolldown
1.0.3 -> 1.1.1, tsdown0.22.1 -> 0.22.3, oxlint1.67.0 -> 1.70.0, oxfmt0.52.0 -> 0.55.0, vitest4.1.8 -> 4.1.9, and the oxc toolchain0.133.0 -> 0.136.0(#1749, #1767, #1812, #1834, #1855), by @voidzero-guard[bot]
Fixes & Enhancements
- Security: resolve open Rust Dependabot advisories by bumping transitive
openssl0.10.76 -> 0.10.80(openssl-sys0.9.112 -> 0.9.116), fixing five high-severity rust-openssl issues (buffer overflows in key derivation, AES key wrap, and digest finalization; an unchecked PSK/cookie trampoline length leaking adjacent memory; and OCSP-responder undefined behavior: GHSA-pqf5-4pqq-29f5, GHSA-8c75-8mhr-p7r9, GHSA-ghm9-cr32-g9qj, GHSA-hppc-g8h3-xhp3, GHSA-xp3w-r5p5-63rr), and drop the unmaintained, unsoundlibyml(GHSA-gfxp-f68g-8x78, high) by removing deadserde_ymlcode (#1742), by @fengmk2 - Security (docs site): update
mermaid11.13.0 -> 11.15.0to fix improperclassDefsanitization in state diagrams that allowed HTML injection (CVE-2026-41149 / GHSA-ghcm-xqfw-q4vr, medium severity;<script>tags are stripped so it does not reach XSS) (#1745), by @renovate[bot] vp check --fix/vp staged: create/migrate now wrap inline Viteplugins: [...]arrays withlazyPlugins(...)so plugin factories aren't eagerly executed (and don't hang on open handles) during lint/format/check config loading (#1752), by @jong-kyungvp migrate: complete pending migration work for projects that already havevite-plusinstalled (scripts, imports, tsconfig types, ESLint/Prettier, legacy hooks, package-manager settings) instead of treatingvite-plusas migration-complete; fully migrated projects stay idempotent (#1821), by @jong-kyungvp create/vp migrate: detect shorthandfmt,/lint,config keys so a duplicate inline block is no longer injected (#1843), by @fengmk2- IDE oxlint/oxfmt wrappers: set
VP_COMMANDsolazyPlugins()skips framework plugins during LSP config reads, preventing a stray.svelte-kit(and similar) directory at the monorepo root (#1764), by @jong-kyung vp lint/vp run -r linton Windows: keep the absolutetsgolintpath for workspace lint runs instead of downgrading it to a wrong cwd-relative path (#1758), by @semimikoh- oxlint wrapper: set the
tsgolintpath so type-aware lint resolves it (#1811), by @jong-kyung vp install -g: use a unique backup directory and treat stale-backup cleanup as best-effort so a locked Windows binary no longer fails an otherwise successful reinstall (#1753), by @fengmk2vp install -g: remove stale managed binary shims when a reinstalled package drops a bin from itspackage.json#bin(#1765), by @liangmiQwQvp create --git: surface git's actual stdout/stderr when the initial commit fails instead of always blaminguser.name/user.email(#1819), by @fengmk2vp create vite:generator: reject--git/--no-git, since adding a generator to an existing monorepo does not initialize git (#1788), by @jong-kyung- Global CLI: harden
find_system_toolagainst a self-exec loop (skip the running executable's own bin directory) and fix twovite_global_clitests that could hang (#1820), by @fengmk2 - CLI help: unify alias display (#1832), show supported
runoptions (#1797), show--fail-if-no-matchinexechelp (#1798), add theimplodedocumentation link (#1796), and handle nested-command typo help (#1803), by @jong-kyung
Docs
- Document
vp createopt-out options (#1790), by @jong-kyung - Document
vp upgradeoptions (#1847), by @jong-kyung - Align the config overview with the sidebar (#1846), by @jong-kyung
- Sync the documented command lists with the help output (#1850), by @jong-kyung
- Clarify lazy plugin side effects (#1841), by @leno23
- Add JongKyung's X profile (#1844) and update Christoph's X profile (#1845) on the team page, by @jong-kyung
Refactor
- Remove the CLI tips system; the shortcuts it printed on
vp installare already covered by the help system and added unnecessary complexity (#1799), by @cpojer
Chore
vite-plus v0.1.24
A new vp pm stage publishing workflow, hardened installs and upgrades, a Node-version mismatch reinstall prompt, and the bundled vite/vitest/tsdown stack moves forward.
Features
vp pm stage: a newvp pmsubcommand exposing npm's staged-publishing workflow (upload a build to a staging area without 2FA, then approve or reject it from a trusted device); it maps topnpm stage/npm stage/yarn npm ... --stagedper package manager, with an npm fallback for yarn Classic and bun (#1715), by @fengmk2vp: prompt to reinstall when up-to-date global packages were built against a different Node.js than the active one (defaults to no); adds--reinstall-node-mismatchand--ignore-node-mismatch, and skips the prompt in CI (#1666), by @liangmiQwQvp format: addformatas a visible alias ofvp fmt, so the common slipvp formatresolves correctly andvp format --init/--migrateapply the samevite.config.tswiring asvp fmt(#1727), by @semimikoh
Fixes & Enhancements
vp install/ Node runtime download: HTTP retries now wrap the whole body stream, hash verification, and archive extraction (not just the request headers), so truncated or corrupt downloads of package managers and Node are re-fetched instead of failing on the first attempt (#1719), by @fengmk2vp upgrade --forceon Windows: install into a fresh directory before repointingcurrent, so the forced reinstall no longer fails trying to overwrite the runningvp.exe(#1714), by @fengmk2vp install -g: install global packages directly into their final prefix instead of a temp dir that gets moved, so packages whose postinstall scripts bake in absolute or relative temp paths still resolve their bins; a failed package in a multi-package install no longer removes the shims of the ones that already succeeded (#1698), by @liangmiQwQvp why: remove the-g/--globalflag, which delegated to the package manager's global mode and ignored Vite+-managed global packages;vp whystays project-scoped whilevp outdated -gkeeps using the managed global flow (#1720), by @liangmiQwQ- Windows installer: remove the existing
currentlink via PowerShell (detecting junctions, symlinks, and stale directories) instead ofcmd /c rmdir, which could fail with "The directory is not empty" (#1726), by @TheAlexLichter vp create: skip editor-config detection and package-local editor settings by default when creating a project inside an existing monorepo;--editor <name>stays an explicit opt-in and--no-editoran opt-out (#1729), by @jong-kyungvp create vite:monorepo(pnpm): keep the aliasedvite/vitestin the website app'spackage.jsonso the workspaceoverrides.vite: catalog:has a direct consumer andvp why viteresolves to@voidzero-dev/vite-plus-core; npm/yarn/bun still drop the dead-weight keys (#1728), by @fengmk2vp pack: rewrite directcreateRequire(...)("picomatch")calls in bundled tsdown output to the local bundled CJS entry, so packing no longer depends on an undeclared runtimepicomatchunder pnpmhoist: false(#1732), by @fengmk2vp migrate: resolve acatalog:husky pin from the workspace catalog (pnpm-workspace.yaml,.yarnrc.yml, orpackage.jsoncatalogs) during the git-hooks preflight, so a compatible catalog-pinned husky no longer triggers a false "could not determine husky version" warning and skips hook setup (#1710), by @fengmk2
Docs
- Add a Copy Prompt button to the docs site that copies an AI-friendly getting-started prompt (intro,
llms-full.txtpointer, install commands, and corevpcommands) for handing straight to a coding agent (#1706), by @fengmk2 - Update
troubleshooting.md:vite.config.tsrelated issues are resolved by updating oxlint and oxfmt (#1708), by @leaysgur - Clarify the product and repository documentation locations and the new Run guide/config paths in
AGENTS.md(#1707), by @leaysgur
Chore
vpinstall: reduce retainedvpversions from 5 to 3 across the installer,vp upgrade, and the shell/PowerShell bootstrap scripts (active and previous versions stay protected for rollback); document the 3-version retention andvp upgrade --rollback(#1716), by @fengmk2- Exclude the snap-tests directory from Vitest config discovery so the VS Code Vitest extension stops generating a stray
.vitest-plugin-loadedfile (#1723), by @liangmiQwQ - Refresh trusted stack stats on the docs homepage (#1734), by @voidzero-guard[bot]
- Update @wan9chi's GitHub handle (formerly
branchseer) (#1705), by @wan9chi - Update GitHub Actions (#1724, #1730), by @renovate[bot]
- Upgrade upstream dependencies: vite
8.0.14 → 8.0.16, vitest4.1.7 → 4.1.8, tsdown0.22.0 → 0.22.1,@vitejs/devtools0.2.0 → 0.3.1(#1713, #1735, #1737), by @voidzero-guard[bot]
Bundled Versions
| Tool | Version | Source |
|---|---|---|
| vite | 8.0.16 |
f94df87 |
| rolldown | 1.0.3 |
a287faa |
| tsdown | 0.22.1 |
npm |
| vitest | 4.1.8 |
npm |
| oxlint | 1.67.0 |
npm |
| oxlint-tsgolint | 0.23.0 |
npm |
| oxfmt | 0.52.0 |
npm |
New Contributors
Welcome to our new contributor @semimikoh! 🎉
Full Changelog: v0.1.23...v0.1.24
Published Packages
@voidzero-dev/vite-plus-core@0.1.24@voidzero-dev/vite-plus-test@0.1.24vite-plus@0.1.24
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.
Upgrade:
vp upgradevite-plus v0.1.23
Enterprise-ready HTTP (proxy + custom CA), task command shorthands in vite.config.ts, a smoother vp create/vp migrate, and the oxc/vite/rolldown bundled stack moves forward.
Highlights
- Proxy and custom-CA aware HTTP: a new process-wide
vite_shared::shared_http_client()honorsHTTPS_PROXY/HTTP_PROXY/NO_PROXY, picks up macOS System Settings / Windows registry proxies, loads custom CAs fromSSL_CERT_FILEandNODE_EXTRA_CA_CERTS, and exposes aVP_INSECURE_TLSdiagnostic switch; makesvpwork through Socket Firewall Free and other TLS-intercepting proxies (#1686), by @fengmk2 - Task command shorthands:
run.tasksentries invite.config.tsnow accept a bare string ("build": "cmd") or array ("build": ["cmd1", "cmd2"]) instead of always requiring{ command: ... }; arrays reuse the existing&&planning path so cache,dependsOn, and task options stay consistent (vite-task#391), by @jong-kyung - Managed
vp outdated -g: routes through Vite+'s managed global package metadata instead of delegating to the underlyingnpm outdated -gstore, so all installed global packages are reported consistently (#1659), by @liangmiQwQ
Features
vp pm approve-builds: new unified subcommand that mirrorspnpm approve-buildsone-to-one, adapts tobun pm trust, and warns-and-noops on npm/yarn (#1662), by @fengmk2vp create: opt-in GitHub Copilot setup; selecting--agent copilotnow generates a.github/workflows/copilot-setup-steps.ymlso the Copilot Coding Agent can set up Vite+ and runvpin the new project out of the box (#1683), by @jong-kyungvp migrate: prompt to removebaseUrlfromtsconfig.jsonbefore applying type-aware lint defaults (runs@andrewbranch/ts5to6 --fixBaseUrl .under the hood; auto-applied in non-interactive mode) (#1692), by @TheAlexLichter- Respect
packageManagerin package-manager shims (npm/npx,pnpm/pnpx,yarn/yarnpkg,bun/bunx); add non-mutatingpackageManagerresolution metadata forvp env currentandvp env which(#1654), by @fengmk2 - vite-task:
--filterno-match now exits0by default; add--fail-if-no-matchto opt back in (vite-task#393), by @kazupon
Fixes & Enhancements
vp create: keep generated.vscode/settings.jsontrackable when the VS Code editor option is selected (avoid templates'.vscode/*.gitignoremasking it) (#1700), by @jong-kyungvp create vite:monorepo: normalize sub-packagevite-plustocatalog:even when onlyvite-plus(notvite/vitest/...) is present, and drop thevite/vitestaliases generated by the upstream library template (#1697), by @fengmk2vp add/install -g <path>: resolve the real package name frompackage.jsoninstead of using the path string, so local-path installs don't create broken directories (#1685), by @liangmiQwQvp test --coverageand other direct built-in commands now expose the workspace'spackage.json#packageManagerto child processes so tools like Vitest coverage can spawn the configured PM (#1696), by @jong-kyungvp migrate: clean up the whole ESLint ecosystem (plugins, configs, parser/resolver, type-utils) rather than justeslint; skip the migration entirely when@nuxt/eslintis detected (#1682), by @fengmk2vp create: writefmt.configPath(notconfigPath) for Zed oxfmt settings to match the official Zed OXC extension layout (#1687), by @chungweileong94vp migrate: parsetsconfig.jsonas JSONC so files with comments don't breakbaseUrldetection/removal (#1688), by @TheAlexLichtervp env setup: Unix env shims now point at the activevpexecutable instead of always assumingVP_HOME/current/bin/vp, so Homebrew-style installs work (#1631), by @leoharavp outdated -g/vp why -g: don't require a localpackage.json; global commands run regardless of cwd (#1622), by @liangmiQwQvp create: default the "Initialize a git repository?" prompt to yes (#1650), by @fengmk2vphooks: include the managed Node bin inPATHso./node_modules/.bin/vpcan findnodefrom a VS Code commit on macOS (#1647), by @TheAlexLichtervpxon Windows now invokes the package's.cmdshim instead of the Unix binary (#1652), by @tobynguyen27- vite-task: bump cache database schema to version 13 (forces a one-time rebuild of the local task cache) (vite-task#402), by @branchseer
- Bump vite-task to
d02b257and5833b374; also bumps the repo's Rust nightly toolchain tonightly-2026-05-24and ships the regeneratedrunconfig types and docs for the new task command shorthand (#1689, #1695), by @branchseer
Refactor
- Replace
VP_SHELL_NU/VP_SHELL_PWSHwith a singleVP_SHELLoverride; add explicit shell parsing forbash,zsh,fish,nu,pwsh, andcmd, and harden auto-detection against nested shells (#1658), by @nekomoyi - vite-task: replace
allocator-api2withbumpalocollections (vite-task#400), by @branchseer - vite-task: drop the unused
and_item_indexfield fromExecutionItemDisplay(vite-task#394), by @branchseer
Docs
- Add the root
AGENTS.mdas the primary AI-agent guide for the vite-plus repository; convertCLAUDE.mdinto a compatibility pointer (#1670), by @jong-kyung - Align the agent validation table to match
AGENTS.md(#1673), by @jong-kyung - Update the task output caching guide so the documented behavior matches what vite-task actually does (#1639), by @ericclemmons
- Correct the bundled-source location in
packages/core/BUNDLING.md(#1660), by @shulaoda
Chore
- Clarify
--helptext forvp env default/pin/use/execwithExamples:blocks (#1664), by @Boshen - Refresh trusted stack stats on the docs homepage (#1680), by @voidzero-guard[bot]
- Drop the standalone
pnpm --filter @rolldown/pluginutils buildstep now that@rolldown/pluginutilsis published from its own package (#1655), by @shulaoda - Preserve single-quote style when
sync-remoterewritespnpm-workspace.yaml(#1672), by @lyzno1 - Enable
vite_pm_clilib tests by removing a staletest = falseflag (#1661), by @shulaoda - CI: switch macOS runners back to
namespace-profile-mac-default(#1701), by @fengmk2 - CI: fix release-day flakes in the upgrade test and snap test when the dev
package.jsonversion equals npm latest (#1645), by @fengmk2 - CI: replace
zizmorandcargo-denyworkflows withoxc-project/security-action(#1635), by @Boshen - CI: warm-up monorepo cache test under npm (#1649), by @fengmk2
- CI: attach per-target
vpbinary archives (.tar.gz/.zip) to GitHub Releases alongside the existingvp-setup-*.exeinstallers (#1665), by @Boshen - CI: declare Playwright via
repo.jsonin ecosystem tests and bump consumers to>=1.60to dodge the Node 24.16.0 hang (#1668), by @fengmk2 - Update GitHub Actions (#1640, #1675, #1678, #1679, #1691), by @renovate[bot]
- Upgrade upstream dependencies: vite
8.0.11 → 8.0.14, rolldown1.0.0 → 1.0.3, vitest4.1.6 → 4.1.7, oxlint1.63.0 → 1.67.0, oxfmt0.48.0 → 0.52.0, oxlint-tsgolint0.22.1 → 0.23.0,@oxc-project/*and oxc Rust crates0.129.0 → 0.133.0(#1646, #1653, #1693, #1699), by @voidzero-guard[bot]
Bundled...
vite-plus v0.1.22
A critical Vitest browser-mode security fix, parallel vp add -g installs, a built-in oxlint rule to prefer vite-plus imports, and a new --git switch for vp create.
Highlights
- Security: bundled
vitestbumped to4.1.6to address GHSA-2h32-95rg-cppp (Critical, CVSS 9.6), an XSS to RCE chain via theotelCarrierquery parameter in Vitest browser mode (#1633) - Parallel global install:
vp add/install/update -gnow installs packages concurrently with a progress bar and a--concurrencyflag (default 5) (#1597) - Prefer vite-plus imports: new bundled oxlint rule rewrites
vite/vitestimports tovite-plus, enabled by default in generated and migratedlintconfigs (#1408) - Git init on scaffold:
vp createlearns--git/--no-git(interactive prompt; auto-commits "Initial commit from Vite+") (#1484)
Features
- Spawn npm for global installation in parallel with a progress bar and a
--concurrencyoption (#1597), by @liangmiQwQ - Add bundled oxlint rule to prefer
vite-plusimports overvite/vitest(#1408), by @Han5991 vp create: initialize a git repository and create an initial commit on scaffold (#1484), by @ryohidakavp create: rename underscore-prefixed files (_gitignore,_npmrc,_yarnrc.yml) to dotfiles for@org/createbundled templates (#1574), by @jong-kyung- Add
VP_PR_VERSIONenv var to install unreleased PR builds via pkg.pr.new (#1578), by @fengmk2
Fixes & Enhancements
- Skip merging standalone
.oxfmtrc/.oxlintrcconfig when thefmt:/lint:key is already declared invite.config.ts(fixes duplicate-block regression invp create fate) (#1601), by @fengmk2 - Suppress the
VITE+ - The Unified Toolchain for the Webbanner forvp lint --lsp,vp fmt --lsp, andvp fmt --stdin-filepathso stdout stays a pure LSP / formatter stream (#1619), by @fengmk2 vp create: detect output directory when running in the current directory (#1606), by @jong-kyungvp update -g: skip installs when the recorded global package version already matches the npm-resolved version, and tolerate string/array outputs fromnpm view ... version --json(#1596), by @leno23vp create: preserve single-segment project path inupdateWorkspaceConfig(#1582), by @jong-kyungvp env use: keep the change session-scoped on Windows (#1577), by @fengmk2vp rebuild: accept positional package names (#1564), by @fengmk2- Adopt the new vite-task error formatter; errors now print as
error: <top-level>plus* <source>chain lines, with bold-red highlight on a TTY (vite-task#390), by @branchseer - vite-task: forward
LOCALAPPDATAso Node's compile cache stays outside the workspace on Windows (vite-task#389), by @branchseer - Bump vite-task to
c945cc0(#1628), by @branchseer
Refactor
- Revert
vp pm plugincommand (per discussion in #1038) (#1623), by @jong-kyung
Docs
- Add
vitepress-plugin-llmsto the docs site so the published docs include LLM-friendly outputs (/llms.txt) (#1625), by @jong-kyung - Refresh home stats for oxlint, vite, and vitest (#1512), by @nozomee
- Mention
vp env doctorin agent instructions (#1603), by @leno23
Chore
- Consolidate the upstream build chain into a single
pnpm buildscript (justfile recipe now just callspnpm build) (#1626), by @fengmk2 - Fix bootstrap-cli on Windows (#1583), by @fengmk2
- Refresh trusted stack stats (#1573, #1616), by @voidzero-guard[bot]
- Update GitHub Actions (#1611, #1612), by @renovate[bot]
- Address zizmor findings in composite actions and the release workflow; drop unused
actions-cool/issues-helper(#1630), by @Boshen - Switch plain checkouts to
taiki-e/checkout-action(#1620), by @Boshen - Switch release to a version-bump PR + push trigger flow (#1575), by @Boshen
- Gate release publish on environment approval with a Discord notice (#1571), by @Boshen
- Enable
cargo clippywith-D warnings(#1579), by @Boshen - Drop unused
setup-nodefrom the version-check job (#1600), by @fengmk2 - Add Void deploy workflows for the docs site (#1590), by @fengmk2
- Add
--helpcase to config snap tests for npm10/yarn1/yarn4 (#1585), by @jong-kyung - Add
--helpcase to publish snap tests for npm10/yarn1/yarn4 (#1584), by @jong-kyung - Verify
.gitignoreand.yarnrc.ymlin the new-vite-monorepo snap (#1576), by @jong-kyung - vite-task: bump pnpm to
11.1.2(vite-task#383), by @branchseer - vite-task: update lint-staged to v17 (vite-task#385), by @renovate[bot]
Bundled Versions
| Tool | Version | Source |
|---|---|---|
| vite | 8.0.11 |
66f3194 |
| rolldown | 1.0.0 |
ac5c710 |
| tsdown | 0.22.0 |
npm |
| vitest | 4.1.6 |
npm |
| oxlint | 1.63.0 |
npm |
| oxlint-tsgolint | 0.22.1 |
npm |
| oxfmt | 0.48.0 |
npm |
New Contributors
Welcome to all new contributors! 🎉
Full Changelog: v0.1.21...v0.1.22
Published Packages
@voidzero-dev/vite-plus-core@0.1.22@voidzero-dev/vite-plus-test@0.1.22vite-plus@0.1.22
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.
Upgrade:
vp upgradevite-plus v0.1.21 — Create, Migrate & Local CLI Power-Up
vp create learns @org templates, vp migrate rewrites more of your codebase, and the local CLI gains full vp pm parity.
Highlights
- Package-manager parity — every
vp pmcommand now works from the local CLI (#1495) - More Nushell support — broader shell coverage for
vp envand related commands (#1305) - Smarter
vp migrate— rewrites named catalogs (#1493),tsdown/clientimports &declare modulestatements (#1541), andtsdown/client/vite/clientintsconfigcompilerOptions.types(#1542) vp create@orgtemplates — scoped default templates are now supported (#1398)
Features
- Bring all package-manager commands to the local CLI (#1495) — @fengmk2
- Support
@orgdefault templates invp create(#1398) — @fengmk2 - Support yarn plugin commands via
vp pm plugin(#1540) — @jong-kyung - Forward
--provenanceflag when publishing a package (#1549) — @cpojer - More Nushell support (#1305) — @XiNiHa
vp migrate: rewritetsdown/clientimports anddeclare modulestatements (#1541) — @naokihabavp migrate: rewritetsdown/clientandvite/clientintsconfigcompilerOptions.types(#1542) — @naokihaba- vite-task: add
outputglobs for cache restoration (vite-task#375) — @branchseer - vite-task: store colored task logs, strip at display when needed (vite-task#378) — @branchseer
- Upgrade upstream dependencies — rolldown
v1.0.0, vitev8.0.11, tsdown0.22.0(with newtsxconfig-loader), oxc Rust crates0.128.0, oxc npm0.129.0, oxlint1.63.0, oxfmt0.48.0,@vitejs/devtools0.1.21(#1521, #1531, #1548) — @voidzero-guard[bot]
Fixes & Enhancements
vp migrate: rewrite named catalogs (#1493) — @lyzno1- Show
createandmigratein local CLI top-level help (#1508) — @nurazon59 - Fish env setup using string-literal command for
vp envcommands (#1518) — @mikkurogue - Auto-pass
--ignore-scriptswhen pnpm>=11inmigrate/create(#1533) — @fengmk2 - Route Windows
.cmdshims through PowerShell for pm commands (#1498) — @fengmk2 - Add
vite-plus/pack/clientexport astsdown/clientequivalent (#1501) — @naokihaba - Publish release as draft to support immutable releases (#1558) — @fengmk2
- Preserve string-literal tabs in
convertTabsToSpaces(#1559) — @fengmk2 - Include
docs/in fmt and lint (#1552) — @fengmk2 - vite-task: move
FORCE_COLORfallback after pattern filtering (vite-task#379) — @branchseer - vite-task: preserve
PATHEXTfor Windows cached tasks (vite-task#366) — @SegaraRai - Bump vite-task to
c63db22(#1560) — @branchseer
Refactor
- Convert team data file to TypeScript (#1515) — @jong-kyung
Docs
- Add filename labels to configuration code blocks (#1496) — @fengmk2
- Add monorepo overrides guide (#1535) — @fengmk2
- Improve "before" CI usage to actual use case (#1551) — @Mister-Hope
Chore
- Update
crate-ci/typosaction to v1.46.1 (#1509, #1554) — @renovate[bot] - Rewrite upgrade-deps script in TypeScript (#1514) — @camc314
- Add pnpm v11 snap tests for command adaptation coverage (#1289) — @fengmk2
- Bump upgrade-deps
max-turnsfrom 200 to 400 (#1520) — @fengmk2 - Update pnpm to v10.33.2 (#1505) — @renovate[bot]
- Prevent false-positive
<repeat>replacement on trailing plus (#1524) — @nurazon59 - Update
lodash-esto v4.18.1 [security] (#1522) — @renovate[bot] - Stabilize global snap tests against pnpm v11 (#1528) — @fengmk2
- Disable npm and cargo updates in Renovate (#1536) — @Boshen
- Publish preview packages to pkg.pr.new (#1526) — @Boshen
- Gate pkg.pr.new publish on label only (#1547) — @Boshen
- Upgrade GitHub Actions to latest versions (#956) — @salmanmkc
- Upgrade GitHub Actions for Node 24 compatibility (#955) — @salmanmkc
- Correct kazupon's X account link on the team page (#1513) — @jong-kyung
- Ensure no file changes after
build-upstreamstep (#1563) — @fengmk2
Bundled Versions
| Tool | Version | Source |
|---|---|---|
| vite | 8.0.11 |
66f3194 |
| rolldown | 1.0.0 |
ac5c710 |
| tsdown | 0.22.0 |
npm |
| vitest | 4.1.5 |
npm |
| oxlint | 1.63.0 |
npm |
| oxlint-tsgolint | 0.22.1 |
npm |
| oxfmt | 0.48.0 |
npm |
Published Packages
@voidzero-dev/vite-plus-core@0.1.21@voidzero-dev/vite-plus-test@0.1.21vite-plus@0.1.21
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.
Upgrade:
vp upgradeNew Contributors
Welcome to all new contributors! 🎉
@nurazon59, @mikkurogue, @Mister-Hope, @salmanmkc, @XiNiHa
Full Changelog: v0.1.20...v0.1.21
vite-plus v0.1.21-alpha.7
vite-plus v0.1.21-alpha.7
Published Packages
@voidzero-dev/vite-plus-core@0.1.21-alpha.7@voidzero-dev/vite-plus-test@0.1.21-alpha.7vite-plus@0.1.21-alpha.7
Installation
macOS/Linux:
curl -fsSL https://vite.plus | VP_VERSION=0.1.21-alpha.7 bashWindows:
\$env:VP_VERSION=\"0.1.21-alpha.7\"; irm https://vite.plus/ps1 | iexOr download and run vp-setup.exe from the assets below.
View the full commit: c61621a
vite-plus v0.1.21-alpha.6
vite-plus v0.1.21-alpha.6
Published Packages
@voidzero-dev/vite-plus-core@0.1.21-alpha.6@voidzero-dev/vite-plus-test@0.1.21-alpha.6vite-plus@0.1.21-alpha.6
Installation
macOS/Linux:
curl -fsSL https://vite.plus | VP_VERSION=0.1.21-alpha.6 bashWindows:
\$env:VP_VERSION=\"0.1.21-alpha.6\"; irm https://vite.plus/ps1 | iexOr download and run vp-setup.exe from the assets below.
View the full commit: e134e4f
vite-plus v0.1.21-alpha.5
vite-plus v0.1.21-alpha.5
Published Packages
@voidzero-dev/vite-plus-core@0.1.21-alpha.5@voidzero-dev/vite-plus-test@0.1.21-alpha.5vite-plus@0.1.21-alpha.5
Installation
macOS/Linux:
curl -fsSL https://vite.plus | VP_VERSION=0.1.21-alpha.5 bashWindows:
\$env:VP_VERSION=\"0.1.21-alpha.5\"; irm https://vite.plus/ps1 | iexOr download and run vp-setup.exe from the assets below.
View the full commit: 6347597
vite-plus v0.1.21-alpha.4
vite-plus v0.1.21-alpha.4
Published Packages
@voidzero-dev/vite-plus-core@0.1.21-alpha.4@voidzero-dev/vite-plus-test@0.1.21-alpha.4vite-plus@0.1.21-alpha.4
Installation
macOS/Linux:
curl -fsSL https://vite.plus | VP_VERSION=0.1.21-alpha.4 bashWindows:
\$env:VP_VERSION=\"0.1.21-alpha.4\"; irm https://vite.plus/ps1 | iexOr download and run vp-setup.exe from the assets below.
View the full commit: dc41b71