perf: reduce vp binary size#2043
Conversation
✅ Deploy Preview for viteplus-preview canceled.
|
Native binary sizes (
|
| Artifact | Format | Base | PR | Change |
|---|---|---|---|---|
vp (Linux x64) |
Binary | 10.78 MiB | 10.27 MiB | -524.02 KiB (-4.75%) |
vp (Linux x64) |
gzip -9 | 4.68 MiB | 4.41 MiB | -280.23 KiB (-5.85%) |
| NAPI (Linux x64) | Binary | 33.57 MiB | 33.42 MiB | -156.00 KiB (-0.45%) |
| NAPI (Linux x64) | gzip -9 | 12.84 MiB | 12.77 MiB | -71.50 KiB (-0.54%) |
vp (macOS ARM64) |
Binary | 8.02 MiB | 7.61 MiB | -419.89 KiB (-5.12%) |
vp (macOS ARM64) |
gzip -9 | 4.06 MiB | 3.82 MiB | -248.43 KiB (-5.98%) |
| NAPI (macOS ARM64) | Binary | 40.92 MiB | 40.78 MiB | -145.38 KiB (-0.35%) |
| NAPI (macOS ARM64) | gzip -9 | 17.09 MiB | 17.02 MiB | -77.69 KiB (-0.44%) |
vp (Windows x64) |
Binary | 10.26 MiB | 8.32 MiB | -1.94 MiB (-18.93%) |
vp (Windows x64) |
gzip -9 | 4.67 MiB | 3.63 MiB | -1.05 MiB (-22.41%) |
| NAPI (Windows x64) | Binary | 27.99 MiB | 27.85 MiB | -141.00 KiB (-0.49%) |
| NAPI (Windows x64) | gzip -9 | 10.82 MiB | 10.76 MiB | -65.62 KiB (-0.59%) |
| Trampoline (Windows x64) | Binary | 203.00 KiB | 203.00 KiB | 0 B (0.00%) |
| Trampoline (Windows x64) | gzip -9 | 97.91 KiB | 97.91 KiB | +2 B (+0.00%) |
87be261 to
49eecdc
Compare
49eecdc to
ad948a7
Compare
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ad948a7d08
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
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".
1707b7a to
02119e3
Compare
|
@codex review |
|
Codex Review: Didn't find any major issues. Swish! 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". |
62b6e2a to
dcb3b88
Compare
|
@codex review |
dcb3b88 to
e7e97b0
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: dcb3b88c83
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
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".
|
@codex review |
|
Codex Review: Didn't find any major issues. Chef's kiss. 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". |
|
@codex review |
|
Codex Review: Didn't find any major issues. Chef's kiss. 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". |
Registry bridge build (
|
| Package | Version |
|---|---|
vite-plus |
0.0.0-commit.34bf502f587cb98036ac8cdf072783aa813c0dc9 |
@voidzero-dev/vite-plus-core |
0.0.0-commit.34bf502f587cb98036ac8cdf072783aa813c0dc9 |
Install the Vite+ CLI built from this commit, then migrate a project:
# macOS / Linux
curl -fsSL https://vite.plus | VP_PR_VERSION=2043 bash# Windows (PowerShell)
$env:VP_PR_VERSION="2043"; irm https://vite.plus/ps1 | iexAfter 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.34bf502f587cb98036ac8cdf072783aa813c0dc9",
"vite": "npm:@voidzero-dev/vite-plus-core@0.0.0-commit.34bf502f587cb98036ac8cdf072783aa813c0dc9"
}
}
🐳 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-2043 2>/dev/null; docker pull ghcr.io/voidzero-dev/vite-plus:pr-2043Quick check: docker run --rm ghcr.io/voidzero-dev/vite-plus:pr-2043 vp --versionSee docs/guide/docker.md for usage. |
) Release vite-plus v0.2.5: Cleaner environments and more reliable workflows. This release adds cleanup and package version commands, supports TypeScript 7 declaration generation, reduces the standalone binary size, and hardens task tracking, CLI output, package-manager routing, Docker workflows, and project scaffolding. ### Highlights - Add `vp env clean` to remove unused managed Node.js runtimes and package-manager caches ([#2003](#2003)), by @liangmiQwQ - Add `vp pm version`, forwarding native version commands to npm, pnpm, Yarn, and Bun ([#2127](#2127)), by @jong-kyung - Add TypeScript 7 support to declaration generation and generated library projects with tsdown `0.22.7` ([#2104](#2104), [#2168](#2168)), by @wan9chi - Improve automatic task input tracking for Bun on macOS, Linux containers with constrained `/dev/shm`, and Windows process images, reduce Windows backing-file allocation, and clarify task wait failures ([vite-task#515](voidzero-dev/vite-task#515), [vite-task#518](voidzero-dev/vite-task#518), [vite-task#523](voidzero-dev/vite-task#523), [vite-task#524](voidzero-dev/vite-task#524), [vite-task#542](voidzero-dev/vite-task#542), [#2126](#2126), [#2167](#2167)), by @wan9chi - Prevent CLI diagnostics from truncating or panicking when inherited standard output or error is nonblocking ([#2172](#2172), [#2173](#2173)), by @wan9chi ### Fixes & Enhancements - Reduce standalone `vp` binary sizes by about 5% on Linux and macOS and 19% on Windows ([#2043](#2043)), by @fengmk2 - Keep the Docker image non-root by default while allowing passwordless `sudo` for Playwright browser dependencies and system packages ([#2088](#2088)), by @fengmk2 - Ignore `.env` and `.env.*` in generated projects while keeping `.env.example` trackable ([#2095](#2095)), by @forehalo - Create `vp-use.cmd` after the Windows environment bin directory is ready and document its Command Prompt-only usage ([#2128](#2128)), by @liangmiQwQ - Render user-facing process statuses and paths without Rust debug wrappers ([#2130](#2130)), by @liangmiQwQ - Make `vp dedupe` fall back to `yarn install` with a warning on Yarn Classic ([#2139](#2139)), by @jong-kyung - Ensure package-manager child processes, including Bun, can always find the managed Node.js runtime ([#2158](#2158)), by @BlankParticle ### Docs - Update the release-manager post-release guidance ([#2096](#2096)), by @wan9chi - Add Windows to the Namespace sponsor credit ([#2108](#2108)), by @fengmk2 - Document installer and runtime environment variables, registry settings, TLS options, and precedence rules ([#2114](#2114)), by @yukinoshi - Mark shell examples in `CONTRIBUTING.md` as Bash code blocks ([#2159](#2159)), by @BlankParticle ### Chore - Assign prepared release PRs to the workflow actor ([#2094](#2094)), by @wan9chi - Complete the PTY snapshot migration and harden the runner, fixtures, release-version redaction, registry teardown, timeouts, and Linux parallelism ([#2071](#2071), [#2080](#2080), [#2084](#2084), [#2099](#2099), [#2102](#2102), [#2103](#2103), [#2107](#2107), [#2109](#2109), [#2115](#2115), [#2117](#2117), [#2118](#2118), [#2119](#2119), [#2120](#2120), [#2121](#2121), [#2131](#2131), [#2132](#2132), [#2134](#2134), [#2137](#2137), [#2138](#2138), [#2141](#2141), [#2143](#2143), [#2145](#2145), [#2182](#2182)), by @fengmk2 and @wan9chi - Expose Vite+ managed binaries consistently inside snapshot fixtures ([#2110](#2110)), by @liangmiQwQ - Exclude PTY snapshot configuration from Vitest discovery and remove the legacy snapshot infrastructure ([#2135](#2135), [#2146](#2146)), by @jong-kyung - Modernize Windows runners, registry bridge publishing, native size reporting, merge-base comparisons, and package-manager installation CI ([#2083](#2083), [#2100](#2100), [#2105](#2105), [#2106](#2106), [#2112](#2112), [#2133](#2133)), by @fengmk2 - Verify that created monorepo libraries emit declarations in CI ([#2171](#2171)), by @wan9chi ### Bundled Versions | Tool | Version | Source | | --------------- | ------- | ----------------------------------------------------------------------- | | vite | `8.1.4` | [`a477454`](vitejs/vite@a477454) | | rolldown | `1.1.5` | [`f09947a`](rolldown/rolldown@f09947a) | | tsdown | `0.22.7` | [npm](https://npmx.dev/package/tsdown/v/0.22.7) | | vitest | `4.1.10` | [npm](https://npmx.dev/package/vitest/v/4.1.10) | | oxlint | `1.73.0` | [npm](https://npmx.dev/package/oxlint/v/1.73.0) | | oxlint-tsgolint | `0.24.0` | [npm](https://npmx.dev/package/oxlint-tsgolint/v/0.24.0) | | oxfmt | `0.58.0` | [npm](https://npmx.dev/package/oxfmt/v/0.58.0) | ### Upgrade ```bash vp upgrade ``` ### New Contributors Welcome @yukinoshi and @BlankParticle. **Full Changelog**: v0.2.4...v0.2.5 --- 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: wan9chi <dk4rest@gmail.com>
Summary
tracing-subscriber,zip, andvite_errorvp, NAPI, and trampoline sizes in a sticky PR commentFinal results
vp(Linux x64)vp(macOS ARM64)vp(Windows x64)Windows size difference
The old
vite_errordependency pulled bundled SQLite into the MSVC executables, while Unix linkers discarded most unused SQLite code. Disablingzipdefaults also removes BZip2, Deflate64, LZMA, and PPMd; Node archives only require Deflate.vp-setup.exeshows the same 2.02 MB drop asvp.exe, while NAPI drops 0.14 MB because task dependencies still use SQLite and NAPI does not include the ZIP extractor.The workflow uses
build-upstream,build-windows-cli, andcompute-native-cache-input-hash. Linux and Windows cross-compilation run onnamespace-profile-linux-x64-default; macOS runs onnamespace-profile-mac-default.