github voidzero-dev/vite-plus v0.3.0
vite-plus v0.3.0: XDG install layout, tsup project migration, and Bun 1.4 support

5 hours ago

Fresh installs now use a split directory layout instead of a single ~/.vite-plus root. Unix follows the XDG base directory specification, and Windows uses the standard %LOCALAPPDATA% and %APPDATA% folders. Existing ~/.vite-plus installs keep their current directory layout. vp migrate also converts tsup projects, and vp now sends Bun 1.4 package-manager commands to bun directly. The published npm package shrank by about half, and the upgrade check no longer delays each command.

Breaking Changes

  • Fresh installs now use a split directory layout instead of a single root: XDG base directories on Unix, and the standard known folders on Windows. Existing ~/.vite-plus installs keep their current layout, and the installer does not move their files. VP_HOME still selects the single-root layout (#2346), by @forehalo

    Category Unix default Windows default Single-root (VP_HOME)
    bin ~/.local/share/vite-plus/bin %LOCALAPPDATA%\vite-plus\bin <root>/bin
    data ~/.local/share/vite-plus %LOCALAPPDATA%\vite-plus\data <root>
    cache ~/.cache/vite-plus %LOCALAPPDATA%\vite-plus\cache <root>/cache
    config ~/.config/vite-plus %APPDATA%\vite-plus <root>
    state ~/.local/state/vite-plus %LOCALAPPDATA%\vite-plus\state <root>

    The installer configures your shell for the new location, and CI that installs through setup-vp keeps the single-root layout automatically. Update each hard-coded ~/.vite-plus/bin path, such as a path in a Dockerfile.

    vp upgrade leaves an existing install where it is. To move one to the split layout, remove it and install again:

    vp implode
    unset VP_HOME VP_DATA_DIR VP_BIN_DIR VP_CACHE_DIR
    curl -fsSL https://vite.plus | bash

    On Windows, run vp implode, then Remove-Item Env:\VP_HOME, Env:\VP_DATA_DIR, Env:\VP_BIN_DIR, Env:\VP_CACHE_DIR -ErrorAction SilentlyContinue, then irm https://vite.plus/ps1 | iex. Also delete any persistent VP_HOME or VP_*_DIR definition from your shell profile or system environment, because a fresh install still honors them and VP_HOME selects the single-root layout.

    vp implode removes every Vite+ managed Node.js runtime, global package, configuration file, and cache. Stay on your current layout if you would rather not rebuild that state. See Move an existing install to the split directory layout.

Highlights

  • vp migrate now converts tsup projects. It replaces the tsup dependency and script with vp pack. It also changes tsup.config.ts to a tsdown.config.ts that imports from vite-plus/pack (#2434), by @KTrain5169
  • Shell integrations now accept the global -C flag. vp -C <dir> env use changes the environment of your current shell. The -C<dir> and -C=<dir> forms also work. In zsh, Fish, Nushell, and PowerShell, vpr completion keeps the working directory when it changes the command to vp run (#2508), by @simulacre7
  • The published vite-plus npm package shrank from 1.05 MB to 516 kB, a 51% reduction. It now includes only Markdown files from the documentation workspace. It no longer includes VitePress tooling, images, or deployment files (#2480), by @liangmiQwQ

Features

  • With Bun 1.4 or later, Vite+ forwards these commands and flags to bun. Earlier Bun versions keep their fallback or unsupported behavior and report the required Bun version (#2513), by @jong-kyung
    • vp dedupe runs bun dedupe, including --check
    • vp pm prune runs bun prune
    • vp pm audit --fix runs bun audit fix
    • vp add, vp remove, and vp update send --filter to bun
    • vp add --save-catalog sends --catalog to bun
  • The upgrade check no longer delays fast commands. It runs in a separate process. It reports an available update during a later command, and commands no longer wait for the registry (#2380), by @liangmiQwQ
  • Upgrade the bundled toolchain (#2443, #2500, #2504, #2519, #2532), by @voidzero-guard[bot]:
    • vite: 8.2.1 to 8.2.2
    • rolldown: 1.2.3 to 1.2.5
    • vitest: 4.1.10 to 4.1.11
    • oxlint: 1.77.0 to 1.79.0
    • oxfmt: 0.62.0 to 0.64.0
    • Oxc packages and crates: 0.143.0 to 0.146.0
    • Vite+ now accepts @vitejs/devtools 0.5.x. The optional peer range is ^0.4.0 || ^0.5.0. This repository uses 0.5.2.
    • oxfmt and oxlint can report new issues after the upgrade. Run vp check locally. Use vp fmt to fix formatting changes.
  • vp toolchain draws its tree with Unicode glyphs. It no longer uses ASCII connectors (#2442), by @liangmiQwQ

Fixes & Enhancements

  • At a workspace root, bare app commands now use defaultPackage or detected root configuration before they select a member package. A workspace without member packages runs the command in the root (#2530, #2533), by @fengmk2
  • vp up no longer changes "vite": "catalog:" to a version alias under pnpm. Catalog references now stay unchanged during an update. Run vp migrate once to correct an existing project (#2425), by @fengmk2
  • If the server accepts range requests, an interrupted runtime download continues from the bytes on disk. It does not start again (#2452), by @tarikermis
  • The local CLI shows the install instructions when you run a global-only command such as env, upgrade, or implode (#2522), by @jong-kyung
  • vp up -g asks npm for globally installed package versions. A project-level setting no longer makes the lookup fail and hide an available update (#2438), by @jong-kyung
  • When hooks are disabled through HUSKY=0, VP_GIT_HOOKS=0, or VITE_GIT_HOOKS=0, vp config skips the Git lookup. This lets vp config run in a container without Git (#2458), by @tarikermis
  • vp create vite:monorepo now asks once about Git and runs git init once (#2417), by @jong-kyung
  • vp create does not ask about pre-commit hooks when you choose not to initialize Git (#2477), by @liangmiQwQ
  • vp pack --no-config does not read the Vite config. A local vite.config.* file, its pack options, and its hooks no longer run (#2486), by @jong-kyung
  • vp pack --help shows the supported --no-config options (#2487), by @jong-kyung
  • vp staged --no-concurrent works again. --concurrent accepts true, false, or a number greater than 0. It rejects other values. Vite+ also rejects --no-cwd, --no-diff, and --no-diff-filter (#2501), by @RSS1102
  • vp reads about 450 kB less JavaScript at start. It loads the --init and --migrate helpers only when a command needs them (#2490), by @jong-kyung
  • The standalone vp binary is smaller. Vite+ no longer copies the package-manager command tree, and it disables unused tar and dialoguer features (#2507), by @liangmiQwQ
  • A generated Fish environment file escapes the special characters in a path (#2492), by @fengmk2
  • A generated POSIX shell environment file escapes the special characters in a path. It also removes each duplicate Vite+ bin entry (#2494), by @fengmk2
  • The generated cmd.exe wrapper preserves the exit status from vp env use. It does not apply output after a failed command (#2496), by @fengmk2
  • vp exec resolves a relative PATH entry such as ./node_modules/.bin against the working directory of the command (#2350), by @RSS1102
  • Older GitLab setup-vp templates continue to work. The installer selects the legacy layout for them. A template can select the new layout with VP_VPDIRS_AWARE=1 (#2520), by @fengmk2
  • The Windows installer checks the directory variables and the requested version before it downloads a payload. It also repairs a broken current junction (#2505), by @fengmk2
  • install.sh does not show shell configuration warnings when CI=true (#2511), by @fengmk2
  • On Windows, vp implode can remove Vite+ roots that contain long or locked paths. A native helper does this work, and it retries cleanup and writes an error log if cleanup fails (#2510), by @fengmk2
  • A Windows trampoline sidecar must have a vite-plus-shim-v1 header. The trampoline rejects one without that header instead of guessing the install layout (#2526), by @fengmk2

Docs

Chore

Bundled Versions

Tool Version Source
vite 8.2.2 de1111a
rolldown 1.2.5 84c904b
tsdown 0.22.14 npm
vitest 4.1.11 npm
oxlint 1.79.0 npm
oxlint-tsgolint 7.0.2001 npm
oxfmt 0.64.0 npm

Upgrade

vp upgrade

New Contributors

@simulacre7

Full Changelog: v0.2.9...v0.3.0

Published Packages

  • @voidzero-dev/vite-plus-core@0.3.0
  • vite-plus@0.3.0

Installation

macOS/Linux:

curl -fsSL https://vite.plus | bash

Windows:

irm https://vite.plus/ps1 | iex

Or 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.0 vp build

Run any vp command without installing it; see the Docker guide for more.

Don't miss a new vite-plus release

NewReleases is sending notifications on new releases.