Skip to content

release: v1.5.0 - #3336

Open
voidzero-guard[bot] wants to merge 2 commits into
mainfrom
release/v1.5.0
Open

voidzero-guard[bot] wants to merge 2 commits into
mainfrom
release/v1.5.0

Conversation

@voidzero-guard

@voidzero-guard voidzero-guard Bot commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

Vite+ 1.5 adds an official Homebrew tap, runs TypeScript through Node.js with node --import vite-plus/register, and lets vp migrate move oxnode and transpile-only ts-node scripts to vpx. It also upgrades Vitest to 5.1 and Oxfmt to 0.76.

Features

  • Install vp from the official Homebrew tap on macOS and glibc Linux: brew tap voidzero-dev/vite-plus https://github.com/voidzero-dev/vite-plus, then brew install voidzero-dev/vite-plus/vp. Homebrew manages the vp executable, and vp installs its matching dependencies on first use. Users of the Homebrew Core vite-plus formula get a notice that explains how to switch (docs) (#2740), by @fengmk2.
  • node --import vite-plus/register runs TypeScript with the same loader as vpx, so tools that start Node.js themselves, such as the Node.js test runner, AVA, or a NODE_OPTIONS setting, can run TypeScript files (docs) (#3208), by @fengmk2.
  • vp migrate moves oxnode commands and transpile-only ts-node commands to vpx, and moves their Node.js preloads and literal NODE_OPTIONS values to vite-plus/register. ts-node commands that type-check stay unchanged with a warning, and the ts-node dependency is removed only when nothing still uses it. A project already on Vite+ gets this migration with vp migrate --full (docs) (#3209, #3210), by @fengmk2.
  • vp migrate warns 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 with vp migrate --full in a project already on Vite+ (#3275), by @KTrain5169.
  • vite-plus exports resolveConfigFromFile(configFile, options?), which resolves a config relative to the config file's directory instead of process.cwd(), so editor plugins with several workspace folders load the files of the right project (#3249), by @leaysgur.
  • Security: the CLI ships minimatch@11.0.4, which fixes a denial of service through glob pattern amplification (GHSA-g3hv-75wg-m249, medium), and zstd@0.13.4, which fixes RUSTSEC-2026-0391, RUSTSEC-2026-0398, and RUSTSEC-2026-0403 (#3328, #3331), by @renovate[bot] and @wan9chi.
  • Upgrade the bundled tools (#3205, #3236, #3261, #3206, #3330), by @voidzero-guard[bot] and @fengmk2:
    • rolldown@1.2.15 to rolldown@1.2.16, with experimentalInlineCommonChunks in dev mode and no crash when the working directory was deleted.
    • tsdown@0.23.1 to tsdown@0.23.4: vp pack --env-file can be repeated to load several env files, the config has a JSON schema, and ?inline CSS imported from dependencies is inlined.
    • vitest@5.0.5 to vitest@5.1.0, with --last-failed and --since-last-run, fake timers for node:timers, and interactive review of failed snapshots. Browser mode now uses port 23315 by default.
    • oxlint@1.89.0 to oxlint@1.90.0 and oxlint-tsgolint@7.0.2004 to oxlint-tsgolint@7.0.2005, with the new type-aware rule typescript/no-unsafe-enum-assignment and wider checks in rules such as array-callback-return and no-useless-concat.
    • oxfmt@0.74.0 to oxfmt@0.76.0, with a new HTML formatter and JavaScript and TypeScript fixes for parentheses, array layout, and line width with wide characters.
    • The new oxlint and oxfmt versions can flag code that passed before. If your CI runs vp check, run vp fmt after upgrading.
    • vpx and vite-plus/register run on oxc-node@1.0.1, which resolves a .jsx specifier to its .tsx or .ts source.

Fixes & Enhancements

  • vp create into 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 implode removes 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 a VP_HOME that points at another directory cannot delete unrelated files (#3228), by @jong-kyung.
  • vp run starts faster in workspaces whose tasks share cache input and output patterns, 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 run and package-manager commands in npm projects start about 110 ms sooner, because vp reads the npm version from npm's package.json instead of running npm --version (#3259), by @magurotuna.
  • vp migrate checks Vitest prerequisites faster in workspaces, because it parses each lockfile once (#3212), by @jong-kyung.
  • The installer and vp upgrade install 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.
  • The Node.js latest alias in vp env use, vp env default, vp env pin, vp env install, and .nvmrc resolves to the newest stable release instead of a 27.0.0-alpha build, and vp env list-remote marks that stable release as latest (#3335), by @voidzero-bot[bot] and @fengmk2.
  • Two vp install -g commands 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 config waits and retries when another linked git worktree holds the shared git config lock, so a prepare script no longer fails when two worktrees install at the same time (#3199), by @naokihaba.
  • vp env doctor reports Node.js resolution failures, unreadable config, a failing system node, and missing shims as errors and exits with code 1. When it finds only warnings, the summary says Some warnings found instead of All checks passed (#3215, #3222), by @liangmiQwQ.
  • Nushell completions for vp and vpr use the named completer input, so Nushell 0.116 shows no deprecation warning, and they fall back to file completion when fish is not installed. Run vp env setup --refresh to regenerate env.nu (#3267, #3276), by @naokihaba.
  • vp migrate removes the tsx dependency even when a comment still contains a tsx command or code fence, and keeps it for JSDoc type imports that need it (#3299), by @voidzero-bot[bot] and @fengmk2.
  • The prefer-vite-plus-imports lint rule and its autofix leave the vite and vitest imports that vp migrate keeps, such as vitest imports in a package that lists vitest in peerDependencies, so vp lint --fix no longer breaks the package for its plain Vitest users (#3192), by @Dunqing.
  • Generated Zed settings no longer force typeAware and unusedDisableDirectives, so editor diagnostics follow the lint.options in vite.config.ts. Existing editor settings stay unchanged (#2357), by @pweyck.
  • vp dlx with npm runs the right executable for scoped packages such as @angular/cli (#3229), by @jong-kyung.
  • vp outdated -r in npm projects checks the workspaces instead of transitive dependencies, and requires npm 7.14.0 or later (#3240), by @jong-kyung.
  • Dependency filters such as --prod and --dev work with npm 6, and filters that npm 6 cannot apply are rejected instead of passed through (#3251), by @jong-kyung.
  • Package-manager commands that the selected version does not have, such as vp pm stage before npm 11.15.0, are skipped with a warning. Unsupported pnpm dlx and pnpm pack options, and project-only flags on managed global commands such as vp install -g, are rejected instead of silently ignored (#3286, #3285), by @jong-kyung.
  • vp toolchain -g is short for vp toolchain --global (#3189), by @jong-kyung.
  • On Linux and macOS, programs in tasks with automatic file-access tracking no longer abort when they call exec with an empty path or execl with 32 or more arguments (vite-task#896, vite-task#865), by @wan9chi and @tlq5l.

Refactor

Docs

  • Explain that vp check stops at formatting failures, and that vp check flags go before file paths (#3262), by @SaKaNa-Y.
  • Show how to align an existing vite dependency with its override during a manual npm installation, to avoid EOVERRIDE (#3157), by @SaKaNa-Y.
  • Explain how environment variable prefixes such as FOO=bar command work in task commands on every platform (#3161), by @tartelettie.
  • Restore the /vp-setup redirect and the redirects for moved guide pages (#3271), by @fengmk2.
  • Align the labels of "See [...]" section links with their target titles (#3231), by @yamaurakazuto.

Chore

Bundled Versions

Tool Version Source Changelog
vite 8.3.5 981f07f unchanged
rolldown 1.2.16 de6facf 1.2.16
oxc-node 1.0.1 7ff14c3 1.0.1
tsdown 0.23.4 npm 0.23.2, 0.23.3, 0.23.4
vitest 5.1.0 npm 5.1.0
oxlint 1.90.0 npm 1.90.0
oxlint-tsgolint 7.0.2005 npm 7.0.2005
oxfmt 0.76.0 npm 0.75.0, 0.76.0

Upgrade

vp upgrade

New Contributors

@yamaurakazuto, @tartelettie, @pweyck, @jasonkuhrt

Full Changelog: v1.4.0...v1.5.0


Merging this PR will trigger the release workflow.

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>
@fengmk2 fengmk2 added the preview-build Publish this PR's commits to the registry bridge as preview builds label Nov 3, 2026
@github-actions

github-actions Bot commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

✅ Staging deployment successful!

Preview: https://viteplus-staging.void.app/
Commit: 943ee4a

@cloudflare-workers-and-pages

Copy link
Copy Markdown

🚀 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 deployment

Preview Deployments by commit

Status Deployment URL Commit Updated (UTC) See this deployment's details
  • Build: Success ✅
  • Deployment: Success ✅

View logs ↗
https://44bf1925-viteplus-dev.voidzero-docs.workers.dev 943ee4a 2026-11-03T16:54:00.955Z Visit the dashboard ↗

@github-actions

github-actions Bot commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

CLI artifact sizes (943ee4a)

Final release artifacts built by the canonical build-upstream and build-windows-cli actions.
The dist rows use the Linux build. The core total excludes .node files to match the release artifact.

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%)

@github-actions

github-actions Bot commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

Preview binary sizes (943ee4a)

Compared with the latest stable release, v1.4.0. Preview build.
Each row measures one binary. Negative changes mean a smaller preview binary.

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.

@github-actions

github-actions Bot commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

Registry bridge build (943ee4a)

This commit build is published to the registry bridge, which serves these as ordinary npm versions (every other package proxies to npmjs):

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 | iex

Or 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 main

Or 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 migrate

Or 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.943ee4a9e322a7ad4b1b4113f844cd541a10b159

pnpm 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"
  }
}

@github-actions

github-actions Bot commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

🐳 Docker preview image

Built from this PR's registry bridge build:

Image Compressed size
ghcr.io/voidzero-dev/vite-plus:pr-3336 219MB
# 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-3336

Quick check:

docker run --rm ghcr.io/voidzero-dev/vite-plus:pr-3336 vp --version

See docs/guide/docker.md for usage.

This was referenced Nov 3, 2026
This was referenced Nov 3, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

preview-build Publish this PR's commits to the registry bridge as preview builds

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant