`vp env exec` / `vp node` ignore `nodeShimMode: system_first`, download a managed runtime (~192 MB) that `vp env clean` then refuses to remove
メンテナーはふだん 1 日以内に返信
評価
この issue はまだ評価されていません。
説明
Summary
With nodeShimMode: system_first, vite-plus correctly resolves Node.js to the system runtime for the shims and for vp env current / vp env which. The vp env exec family -- which vp node is a shorthand for -- does not honour that preference: it resolves and downloads a vite-plus managed Node runtime instead.
This is not a matter of preference between two managed versions. It is a divergence between what vite-plus reports and what it dispatches, plus disk growth on a machine that explicitly opted out of Node management.
Expected vs actual
Configuration:
{
"nodeShimMode": "system_first",
"packageManagerShimModes": { "bun": "system_first", "npm": "system_first",
"pnpm": "system_first", "yarn": "system_first" }
}
What agrees with system_first:
$ node -v
v26.11.1
$ vp env which node
/usr/bin/node
$ vp env current
Node.js:
Version 26.11.1
Source system PATH
Bin Path /usr/bin/node
Mode system_first
What does not:
$ vp node -v
v24.22.0
$ vp env exec node -v
v24.22.0
vp env exec --help states:
--node <NODE>Node.js version to use (e.g., "20.18.0", "lts", "^20.0.0"). If omitted and command is node/npm/npx or a global package binary, version is resolved automatically (same as shim behavior)
The shim resolves to the system Node, so env exec is not resolving "the same as shim behavior".
Reproduction
Deterministic container, Docker or Podman:
https://gist.github.com/Kat404/0c2bf9a8f0a6942f216a827098e3a24d
podman build -t vp-sysfirst-exec .
podman run --rm vp-sysfirst-exec
CASE A: DIVERGENCE CONFIRMED shim=v20.19.2 vp-node=v24.22.0
CASE B: 201708991 bytes on disk under js_runtime/node
CASE C: inventory tracks it as: * v24.22.0 current
CASE D: inventory does record it, so uninstall (not clean) is the only removal
CASE E: vp env clean -> ✓ Removed 0 Node.js runtimes
The build fails if the divergence does not reproduce.
Manually, without a container:
vp env off node
vp env off pm
mkdir -p /tmp/repro && cd /tmp/repro
printf '{\n "name": "repro",\n "version": "1.0.0",\n "private": true\n}\n' > package.json
node -v # system version
vp env which node # /usr/bin/node
vp node -v # vite-plus managed version
Consequences
-
Unwanted download. Running
vp node(orvp env exec node) materialises a managed runtime of roughly 190-220 MB on a machine configured to use the system Node. -
vp env cleancannot reclaim it. Once downloaded, the runtime is recorded as the current version:
$ vp env list
Node.js
* v24.22.0 current
$ vp env clean
✓ Removed 0 Node.js runtimes
Per the docs, vp env clean preserves the current and configured-default versions. So the space comes back every time a project invokes vp node, and the only removal is the explicit vp env uninstall 24.22.0.
- Confusing state.
vp env listreports* v24.22.0 currentwhilevp env currentreports the system26.11.1as the resolved environment. Two commands, two different "current" Node runtimes.
Possible fixes
- Resolve
env execthrough the same path the shims use, sonodeShimMode: system_firstapplies to it too. - Or: when a runtime is materialised only as an
env execfallback while the environment is system-first, do not record it as the current install, sovp env cleancan remove it.
Related, not duplicates
- #2642 - Concurrent
vp run devprocesses download the same Node.js runtime twice. Same subsystem, different symptom. - #2728 -
nodeshim loops forever in system-first mode when the systemnodeis a mise shim. Same mode, different failure. - #2746 / #2758 - Separate
system-firstshims from the main bin directory (merged; this is whybin/now holds onlyvp,vpr,vpxand the rest live infallback-bin/, appended to PATH).
Environment
- vite-plus v1.3.0 (
vp upgrade --checkreports already up to date) - Arch Linux, kernel 6.x
- System Node.js: v26.11.1 at
/usr/bin/node(pacmannodejs) - Container repro: debian:stable-slim with Debian
nodejsv20.19.2 at/usr/bin/node, vite-plus installed viacurl -fsSL https://vite.plus | bash - Podman 6.1.4
- 主要言語
- Rust
- スター
- 6.3k
- フォーク
- 283
- 平均マージ
- 1日 11時間
- マージ済み PR(30日)
- 200
環境構築
このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
voidzero-dev/vite-plus のほかの issue
-
contribution welcome
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
voidzero-dev/vite-plus#3096 · リアクション 2 件 ·
メンテナーはふだん 1 日以内に返信
-
pending triage
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
voidzero-dev/vite-plus#2882 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
-
enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
voidzero-dev/vite-plus#2097 · コメント 10 件 · リアクション 2 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 3/5 1〜2日 初心者へのやさしさ 72/100
voidzero-dev/vite-plus#3102 ·
メンテナーはふだん 1 日以内に返信
-
`vp run`: Terminal UI for parallel/persistent tasks with per-task log panes (like Turborepo's TUI)オープンpending triage
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
voidzero-dev/vite-plus#3098 · コメント 1 件 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信
voidzero-dev/vite-plus の issue をすべて見る
似ている issue
-
area:ecosystem documentation
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
Chelis-Lang/chelis#3866 ·
メンテナーはふだん 1 日以内に返信
-
bug documentation sev-0
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 86/100
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
dekobon/big-code-analysis#1620 ·
メンテナーはふだん 3 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100