Repository navigation
release: v1.5.0 - #3336
release: v1.5.0#3336voidzero-guard[bot] wants to merge 2 commits into
Conversation
NAPI bakes the package.json version into binding/index.cjs version checks. The prepare_release workflow bumps package.json but does not regenerate this file, so the CI build's regeneration step produces a diff that the post-build no-unexpected-changes guard rejects. Also update the release version in the migration guide and the setup, migration, and upgrade prompts to 1.5.0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
✅ Staging deployment successful! Preview: https://viteplus-staging.void.app/ |
🚀 Deploying Preview to Cloudflare 🚀Preview URL: https://release-v1-5-0-viteplus-dev.voidzero-docs.workers.dev (commit 943ee4a)This URL reflects your latest Preview deploymentPreview Deployments by commit
|
CLI artifact sizes (
|
| Artifact | Format | Base | PR | Change |
|---|---|---|---|---|
packages/cli/dist |
Directory total | 2.33 MiB | 2.33 MiB | 0 B (0.00%) |
packages/core/dist |
Directory total | 4.08 MiB | 4.08 MiB | 0 B (0.00%) |
| Combined package dist | Directory total | 6.41 MiB | 6.41 MiB | 0 B (0.00%) |
vp (Linux x64) |
Binary | 8.31 MiB | 8.31 MiB | 0 B (0.00%) |
vp (Linux x64) |
gzip -9 | 3.80 MiB | 3.80 MiB | +39 B (+0.00%) |
| NAPI (Linux x64) | Binary | 36.39 MiB | 36.39 MiB | 0 B (0.00%) |
| NAPI (Linux x64) | gzip -9 | 14.55 MiB | 14.55 MiB | +454 B (+0.00%) |
vp (macOS ARM64) |
Binary | 5.42 MiB | 5.42 MiB | 0 B (0.00%) |
vp (macOS ARM64) |
gzip -9 | 3.23 MiB | 3.23 MiB | +21 B (+0.00%) |
| NAPI (macOS ARM64) | Binary | 43.01 MiB | 43.01 MiB | 0 B (0.00%) |
| NAPI (macOS ARM64) | gzip -9 | 18.64 MiB | 18.64 MiB | -87 B (-0.00%) |
vp (Windows x64) |
Binary | 6.15 MiB | 6.15 MiB | 0 B (0.00%) |
vp (Windows x64) |
gzip -9 | 2.84 MiB | 2.84 MiB | +305 B (+0.01%) |
| NAPI (Windows x64) | Binary | 32.32 MiB | 32.32 MiB | 0 B (0.00%) |
| NAPI (Windows x64) | gzip -9 | 13.23 MiB | 13.22 MiB | -557 B (-0.00%) |
| Trampoline (Windows x64) | Binary | 13.50 KiB | 13.50 KiB | 0 B (0.00%) |
| Trampoline (Windows x64) | gzip -9 | 7.09 KiB | 7.09 KiB | 0 B (0.00%) |
| Installer (Windows x64) | Binary | 4.66 MiB | 4.66 MiB | 0 B (0.00%) |
| Installer (Windows x64) | gzip -9 | 2.23 MiB | 2.23 MiB | +1 B (+0.00%) |
Preview binary sizes (
|
| Binary | Latest release | Preview | Change |
|---|---|---|---|
vp (macOS ARM64) |
5.38 MiB | 5.42 MiB | +48.80 KiB (+0.89%) |
| NAPI (macOS ARM64) | 42.20 MiB | 42.98 MiB | +791.17 KiB (+1.83%) |
vp (macOS x64) |
6.82 MiB | 6.89 MiB | +72.30 KiB (+1.04%) |
| NAPI (macOS x64) | 47.34 MiB | 48.23 MiB | +909.36 KiB (+1.88%) |
vp (Linux ARM64 GNU) |
6.81 MiB | 6.88 MiB | +64.13 KiB (+0.92%) |
| NAPI (Linux ARM64 GNU) | 31.44 MiB | 32.23 MiB | +811.31 KiB (+2.52%) |
vp (Linux ARM64 musl) |
6.88 MiB | 6.94 MiB | +60.66 KiB (+0.86%) |
| NAPI (Linux ARM64 musl) | 30.67 MiB | 31.44 MiB | +785.19 KiB (+2.50%) |
vp (Linux x64 GNU) |
8.22 MiB | 8.31 MiB | +84.13 KiB (+1.00%) |
| NAPI (Linux x64 GNU) | 35.45 MiB | 36.39 MiB | +955.38 KiB (+2.63%) |
vp (Linux x64 musl) |
8.29 MiB | 8.37 MiB | +80.76 KiB (+0.95%) |
| NAPI (Linux x64 musl) | 34.43 MiB | 35.35 MiB | +932.94 KiB (+2.65%) |
vp (Windows x64) |
6.09 MiB | 6.15 MiB | +57.50 KiB (+0.92%) |
| NAPI (Windows x64) | 31.16 MiB | 31.97 MiB | +836.00 KiB (+2.62%) |
| Trampoline (Windows x64) | 13.00 KiB | 13.00 KiB | 0 B (0.00%) |
| Installer (Windows x64) | 4.67 MiB | 4.66 MiB | -9.00 KiB (-0.19%) |
vp (Windows ARM64) |
5.33 MiB | 5.38 MiB | +55.50 KiB (+1.02%) |
| NAPI (Windows ARM64) | 27.57 MiB | 28.27 MiB | +721.00 KiB (+2.55%) |
| Trampoline (Windows ARM64) | 13.00 KiB | 13.00 KiB | 0 B (0.00%) |
| Installer (Windows ARM64) | 3.85 MiB | 3.84 MiB | -10.00 KiB (-0.25%) |
gzip -9 sizes
| Binary | Latest release | Preview | Change |
|---|---|---|---|
vp (macOS ARM64) |
3.20 MiB | 3.23 MiB | +31.19 KiB (+0.95%) |
| NAPI (macOS ARM64) | 18.25 MiB | 18.64 MiB | +401.26 KiB (+2.15%) |
vp (macOS x64) |
3.38 MiB | 3.41 MiB | +36.14 KiB (+1.04%) |
| NAPI (macOS x64) | 19.44 MiB | 19.88 MiB | +443.07 KiB (+2.23%) |
vp (Linux ARM64 GNU) |
3.69 MiB | 3.73 MiB | +35.96 KiB (+0.95%) |
| NAPI (Linux ARM64 GNU) | 13.31 MiB | 13.72 MiB | +414.92 KiB (+3.04%) |
vp (Linux ARM64 musl) |
3.71 MiB | 3.75 MiB | +35.11 KiB (+0.92%) |
| NAPI (Linux ARM64 musl) | 13.01 MiB | 13.41 MiB | +409.63 KiB (+3.07%) |
vp (Linux x64 GNU) |
3.76 MiB | 3.79 MiB | +37.53 KiB (+0.98%) |
| NAPI (Linux x64 GNU) | 14.12 MiB | 14.55 MiB | +441.03 KiB (+3.05%) |
vp (Linux x64 musl) |
3.78 MiB | 3.82 MiB | +33.67 KiB (+0.87%) |
| NAPI (Linux x64 musl) | 13.66 MiB | 14.08 MiB | +429.74 KiB (+3.07%) |
vp (Windows x64) |
2.82 MiB | 2.84 MiB | +22.63 KiB (+0.78%) |
| NAPI (Windows x64) | 12.69 MiB | 13.09 MiB | +403.20 KiB (+3.10%) |
| Trampoline (Windows x64) | 7.14 KiB | 7.14 KiB | +1 B (+0.01%) |
| Installer (Windows x64) | 2.24 MiB | 2.23 MiB | -4.63 KiB (-0.20%) |
vp (Windows ARM64) |
2.69 MiB | 2.72 MiB | +26.52 KiB (+0.96%) |
| NAPI (Windows ARM64) | 12.05 MiB | 12.42 MiB | +383.83 KiB (+3.11%) |
| Trampoline (Windows ARM64) | 6.93 KiB | 6.92 KiB | -4 B (-0.06%) |
| Installer (Windows ARM64) | 2.14 MiB | 2.13 MiB | -6.55 KiB (-0.30%) |
Raw sizes are uncompressed file sizes. gzip sizes recompress each binary at level 9; they are not package or download archive sizes.
The baseline uses published release files, including NAPI packages from npm at the same version. Build versions and toolchains can affect the difference.
Registry bridge build (
|
| Package | Version |
|---|---|
vite-plus |
0.0.0-commit.943ee4a9e322a7ad4b1b4113f844cd541a10b159 |
@voidzero-dev/vite-plus-core |
0.0.0-commit.943ee4a9e322a7ad4b1b4113f844cd541a10b159 |
create-vite-plus |
0.0.0-commit.943ee4a9e322a7ad4b1b4113f844cd541a10b159 |
Install the Vite+ CLI built from this commit, then migrate a project:
# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/voidzero-dev/vite-plus/943ee4a9e322a7ad4b1b4113f844cd541a10b159/packages/cli/install.sh | VP_PR_VERSION=3336 VP_LEGACY_INSTALLER_URL=https://raw.githubusercontent.com/voidzero-dev/vite-plus/943ee4a9e322a7ad4b1b4113f844cd541a10b159/packages/cli/install-legacy.sh bash# Windows (PowerShell)
$env:VP_PR_VERSION="3336"; $env:VP_LEGACY_INSTALLER_URL="https://raw.githubusercontent.com/voidzero-dev/vite-plus/943ee4a9e322a7ad4b1b4113f844cd541a10b159/packages/cli/install-legacy.ps1"; irm https://raw.githubusercontent.com/voidzero-dev/vite-plus/943ee4a9e322a7ad4b1b4113f844cd541a10b159/packages/cli/install.ps1 | iexOr install with Homebrew (macOS / glibc Linux):
These commands use the formula and binary from this published commit. Replace brew install with brew reinstall if the tap package is already installed.
If Homebrew Core’s vite-plus is installed, run brew uninstall vite-plus first. This keeps your user data; do not run vp implode to switch installations.
(
set -eu
export HOMEBREW_NO_AUTO_UPDATE=1
export HOMEBREW_VP_PR_VERSION=943ee4a9e322a7ad4b1b4113f844cd541a10b159
brew tap voidzero-dev/vite-plus https://github.com/voidzero-dev/vite-plus
preview_tap="$(brew --repository voidzero-dev/vite-plus)"
git -C "$preview_tap" fetch --depth=1 https://github.com/voidzero-dev/vite-plus.git "$HOMEBREW_VP_PR_VERSION"
git -C "$preview_tap" switch --detach "$HOMEBREW_VP_PR_VERSION"
brew install voidzero-dev/vite-plus/vp
brew test voidzero-dev/vite-plus/vp
"$(brew --prefix)/bin/vp"
)The tap stays at the tested commit. Return it to main after testing:
git -C "$(brew --repository voidzero-dev/vite-plus)" switch mainOr download the standalone Windows installer built from this commit:
| Architecture | Installer |
|---|---|
| x64 | vp-setup-x86_64-pc-windows-msvc.exe |
| Arm64 | vp-setup-aarch64-pc-windows-msvc.exe |
GitHub requires you to sign in and downloads each installer as a ZIP artifact. Extract vp-setup.exe, then run it against this preview build:
.\vp-setup.exe --version "0.0.0-commit.943ee4a9e322a7ad4b1b4113f844cd541a10b159" --registry "https://registry-bridge.viteplus.dev/"After installing, upgrade the current project's vite-plus to this test build with:
vp migrateOr create a new project from this commit without installing the CLI:
export npm_config_registry=https://registry-bridge.viteplus.dev/ pnpm_config_registry=https://registry-bridge.viteplus.dev/
pnpm create vite-plus@0.0.0-commit.943ee4a9e322a7ad4b1b4113f844cd541a10b159 # or: npm create vite-plus@0.0.0-commit.943ee4a9e322a7ad4b1b4113f844cd541a10b159$env:npm_config_registry="https://registry-bridge.viteplus.dev/"; $env:pnpm_config_registry="https://registry-bridge.viteplus.dev/"
pnpm create vite-plus@0.0.0-commit.943ee4a9e322a7ad4b1b4113f844cd541a10b159 # or: npm create vite-plus@0.0.0-commit.943ee4a9e322a7ad4b1b4113f844cd541a10b159pnpm 11+ reads pnpm_config_registry, npm and older pnpm read npm_config_registry. The new project pins this build, so keep the registry set for later installs, or configure it as below.
Or point your package manager at the bridge registry https://registry-bridge.viteplus.dev/:
| Package manager | Registry config |
|---|---|
| npm / pnpm / Bun | .npmrc: registry=https://registry-bridge.viteplus.dev/ |
| Yarn (v2+) | .yarnrc.yml: npmRegistryServer: "https://registry-bridge.viteplus.dev/" |
Then pin the build (vite aliases to vite-plus-core; pnpm can use a catalog, npm an overrides entry):
{
"devDependencies": {
"vite-plus": "0.0.0-commit.943ee4a9e322a7ad4b1b4113f844cd541a10b159",
"vite": "npm:@voidzero-dev/vite-plus-core@0.0.0-commit.943ee4a9e322a7ad4b1b4113f844cd541a10b159"
}
}
🐳 Docker preview imageBuilt from this PR's registry bridge build:
# remove any stale local copy from a previous run, then pull fresh
docker rmi ghcr.io/voidzero-dev/vite-plus:pr-3336 2>/dev/null; docker pull ghcr.io/voidzero-dev/vite-plus:pr-3336Quick check: docker run --rm ghcr.io/voidzero-dev/vite-plus:pr-3336 vp --versionSee docs/guide/docker.md for usage. |
Vite+ 1.5 adds an official Homebrew tap, runs TypeScript through Node.js with
node --import vite-plus/register, and letsvp migratemoveoxnodeand transpile-onlyts-nodescripts tovpx. It also upgrades Vitest to 5.1 and Oxfmt to 0.76.Features
vpfrom the official Homebrew tap on macOS and glibc Linux:brew tap voidzero-dev/vite-plus https://github.com/voidzero-dev/vite-plus, thenbrew install voidzero-dev/vite-plus/vp. Homebrew manages thevpexecutable, andvpinstalls its matching dependencies on first use. Users of the Homebrew Corevite-plusformula get a notice that explains how to switch (docs) (#2740), by @fengmk2.node --import vite-plus/registerruns TypeScript with the same loader asvpx, so tools that start Node.js themselves, such as the Node.js test runner, AVA, or aNODE_OPTIONSsetting, can run TypeScript files (docs) (#3208), by @fengmk2.vp migratemovesoxnodecommands and transpile-onlyts-nodecommands tovpx, and moves their Node.js preloads and literalNODE_OPTIONSvalues tovite-plus/register.ts-nodecommands that type-check stay unchanged with a warning, and thets-nodedependency is removed only when nothing still uses it. A project already on Vite+ gets this migration withvp migrate --full(docs) (#3209, #3210), by @fengmk2.vp migratewarns when it finds Rollup, Rolldown, or Jest dependencies with matching configuration, and explains how to move them to Vite, tsdown, or Vitest. The warnings show during the first migration, or withvp migrate --fullin a project already on Vite+ (#3275), by @KTrain5169.vite-plusexportsresolveConfigFromFile(configFile, options?), which resolves a config relative to the config file's directory instead ofprocess.cwd(), so editor plugins with several workspace folders load the files of the right project (#3249), by @leaysgur.minimatch@11.0.4, which fixes a denial of service through glob pattern amplification (GHSA-g3hv-75wg-m249, medium), andzstd@0.13.4, which fixes RUSTSEC-2026-0391, RUSTSEC-2026-0398, and RUSTSEC-2026-0403 (#3328, #3331), by @renovate[bot] and @wan9chi.rolldown@1.2.15torolldown@1.2.16, withexperimentalInlineCommonChunksin dev mode and no crash when the working directory was deleted.tsdown@0.23.1totsdown@0.23.4:vp pack --env-filecan be repeated to load several env files, the config has a JSON schema, and?inlineCSS imported from dependencies is inlined.vitest@5.0.5tovitest@5.1.0, with--last-failedand--since-last-run, fake timers fornode:timers, and interactive review of failed snapshots. Browser mode now uses port 23315 by default.oxlint@1.89.0tooxlint@1.90.0andoxlint-tsgolint@7.0.2004tooxlint-tsgolint@7.0.2005, with the new type-aware ruletypescript/no-unsafe-enum-assignmentand wider checks in rules such asarray-callback-returnandno-useless-concat.oxfmt@0.74.0tooxfmt@0.76.0, with a new HTML formatter and JavaScript and TypeScript fixes for parentheses, array layout, and line width with wide characters.vp check, runvp fmtafter upgrading.vpxandvite-plus/registerrun onoxc-node@1.0.1, which resolves a.jsxspecifier to its.tsxor.tssource.Fixes & Enhancements
vp createinto a target path that is a symbolic link removes only the link after confirmation, instead of deleting the contents of the linked directory, and the overwrite prompt names symbolic links and files (#2418), by @leslieeilsel.vp imploderemoves only directories and shims that it can verify as Vite+ installations, and refuses the home directory, its parents, and filesystem roots even with--yes, so aVP_HOMEthat points at another directory cannot delete unrelated files (#3228), by @jong-kyung.vp runstarts faster in workspaces whose tasks share cacheinputandoutputpatterns, because each pattern is parsed once. In a 138-package workspace this saves about 2 seconds of CPU on every run (vite-task#887, vite-task#890), by @jasonkuhrt and @wan9chi.vp runand package-manager commands in npm projects start about 110 ms sooner, becausevpreads the npm version from npm'spackage.jsoninstead of runningnpm --version(#3259), by @magurotuna.vp migratechecks Vitest prerequisites faster in workspaces, because it parses each lockfile once (#3212), by @jong-kyung.vp upgradeinstall the global CLI's dependencies with the Node.js version that the release pins (24.22.2 for this release), instead of the latest LTS (docs) (#3269), by @fengmk2.latestalias invp env use,vp env default,vp env pin,vp env install, and.nvmrcresolves to the newest stable release instead of a27.0.0-alphabuild, andvp env list-remotemarks that stable release as latest (#3335), by @voidzero-bot[bot] and @fengmk2.vp install -gcommands that run at the same time no longer delete each other's active package, and a command that starts while a package manager is being installed no longer runs its shim before the shim is executable (#3185, #3248), by @jong-kyung.vp configwaits and retries when another linked git worktree holds the shared git config lock, so apreparescript no longer fails when two worktrees install at the same time (#3199), by @naokihaba.vp env doctorreports Node.js resolution failures, unreadable config, a failing systemnode, and missing shims as errors and exits with code 1. When it finds only warnings, the summary saysSome warnings foundinstead ofAll checks passed(#3215, #3222), by @liangmiQwQ.vpandvpruse the named completer input, so Nushell 0.116 shows no deprecation warning, and they fall back to file completion when fish is not installed. Runvp env setup --refreshto regenerateenv.nu(#3267, #3276), by @naokihaba.vp migrateremoves thetsxdependency even when a comment still contains atsxcommand or code fence, and keeps it for JSDoc type imports that need it (#3299), by @voidzero-bot[bot] and @fengmk2.prefer-vite-plus-importslint rule and its autofix leave theviteandvitestimports thatvp migratekeeps, such asvitestimports in a package that listsvitestinpeerDependencies, sovp lint --fixno longer breaks the package for its plain Vitest users (#3192), by @Dunqing.typeAwareandunusedDisableDirectives, so editor diagnostics follow thelint.optionsinvite.config.ts. Existing editor settings stay unchanged (#2357), by @pweyck.vp dlxwith npm runs the right executable for scoped packages such as@angular/cli(#3229), by @jong-kyung.vp outdated -rin npm projects checks the workspaces instead of transitive dependencies, and requires npm 7.14.0 or later (#3240), by @jong-kyung.--prodand--devwork with npm 6, and filters that npm 6 cannot apply are rejected instead of passed through (#3251), by @jong-kyung.vp pm stagebefore npm 11.15.0, are skipped with a warning. Unsupportedpnpm dlxandpnpm packoptions, and project-only flags on managed global commands such asvp install -g, are rejected instead of silently ignored (#3286, #3285), by @jong-kyung.vp toolchain -gis short forvp toolchain --global(#3189), by @jong-kyung.execwith an empty path orexeclwith 32 or more arguments (vite-task#896, vite-task#865), by @wan9chi and @tlq5l.Refactor
Docs
vp checkstops at formatting failures, and thatvp checkflags go before file paths (#3262), by @SaKaNa-Y.vitedependency with its override during a manual npm installation, to avoidEOVERRIDE(#3157), by @SaKaNa-Y.FOO=bar commandwork in task commands on every platform (#3161), by @tartelettie./vp-setupredirect and the redirects for moved guide pages (#3271), by @fengmk2.Chore
40cb9ca; its user-facing changes are listed above (#3246, #3280), by @wan9chi.--full, stabilize pnpm setup and Bun snapshots, update the tiptap ecosystem pin, use a recorded package in the install shortcut case, and remove duplicatedevEnginesparse tests (#3193, #3196, #3242, #3305, #3301), by @liangmiQwQ, @fengmk2, @wan9chi, and @Brooooooklyn.dprintandtaploinjust init(#3234, #3310, #3250), by @renovate[bot] and @leaysgur.AGENTS.md, and the Rolldown exports in the CLI bundling notes (#3207, #3238, #3316), by @fengmk2 and @liangmiQwQ.Bundled Versions
8.3.5981f07f1.2.16de6facf1.0.17ff14c30.23.45.1.01.90.07.0.20050.76.0Upgrade
New Contributors
@yamaurakazuto, @tartelettie, @pweyck, @jasonkuhrt
Full Changelog: v1.4.0...v1.5.0
Merging this PR will trigger the release workflow.