`npm install -g` keeps the `bin` link on the old version after the default Node.js changes
Los mantenedores suelen responder en 1 día
Evaluación
Este issue todavía no se ha evaluado.
Descripción
Describe the bug
When Vite+ manages Node.js, npm install -g <pkg> installs the package into the prefix of the active Node.js version. Vite+ then links the package binary into ~/.vite-plus/bin/ and records the owner in ~/.vite-plus/bins/<bin>.json.
When the active Node.js version changes (for example, the latest LTS moves from 24 to 26), I run npm install -g <pkg> again to update the package. npm installs a new copy into the new Node.js prefix and reports success. But the link in ~/.vite-plus/bin/ still points to the copy in the old Node.js prefix. Vite+ shows no message. When I run the command, I get the old version.
Expected: the link points to the copy that npm just installed, or Vite+ tells me that it kept the old link.
Cause: in check_npm_global_install_result, Vite+ replaces an existing link only when a different npm package owns it. When the same package owns it, Vite+ skips it, and it does not compare the link target with the new npm bin directory:
Possible fix: also replace the link when the same package owns it but the link target is not in the current npm bin directory. Write the new nodeVersion to the bin config, and print a line such as Relinked 'agent-browser' to Node.js 26.13.0 (was 24.15.0).
I can submit a PR for this fix.
Related: #1986 (general discussion about npm install -g and Node.js version management).
Reproduction
No repository is necessary. This is global CLI behavior. See the steps below.
Steps to reproduce
# 1. Install a package with an older default Node.js version
vp env default 24
npm install -g cowsay # Answer "Y" to create the link
ls -l ~/.vite-plus/bin/cowsay # -> .../js_runtime/node/24.x.y/bin/cowsay
# 2. Change the default Node.js version, then install the package again
vp env default 26
npm install -g cowsay # npm reports success; Vite+ prints nothing
ls -l ~/.vite-plus/bin/cowsay # Still -> .../node/24.x.y/bin/cowsay
cat ~/.vite-plus/bins/cowsay.json # "nodeVersion" is still 24.x.y
# The new copy exists, but the link does not use it
ls ~/.vite-plus/js_runtime/node/26.*/lib/node_modules/cowsay
Workaround: remove the link (rm ~/.vite-plus/bin/cowsay), then run npm install -g cowsay again; or run vp install -g instead of npm install -g.
On my machine, 7 links point to old Node.js versions (24.15.0, 24.18.0, 24.21.0), while the active version is 26.13.0.
System Info
$ vp env current
Environment:
Version 26.13.0
Source lts
Tool Paths:
node /Users/user/.vite-plus/js_runtime/node/26.13.0/bin/node
npm /Users/user/.vite-plus/js_runtime/node/26.13.0/bin/npm
npx /Users/user/.vite-plus/js_runtime/node/26.13.0/bin/npx
$ vp --version
vp v0.2.1
Local vite-plus:
vite-plus Not found
Environment:
Package manager Not found
Node.js v26.13.0
macOS, npm 10.9.9. The code at the link above is from current main (7073d613), so the bug is also on main.
Used Package Manager
npm
- Lenguaje dominante
- Rust
- Estrellas
- 6.5k
- Forks
- 297
- Merge medio
- 23 h 42 min
- PR fusionados (30 d)
- 233
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de voidzero-dev/vite-plus
-
triage: not actionable
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
voidzero-dev/vite-plus#3296 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
pending triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 63/100
voidzero-dev/vite-plus#3235 ·
Los mantenedores suelen responder en 1 día
-
Docker guide: the runtime stage needs libatomic1 for Node.js 25 and laterPosiblemente ocupada @kshanxs la tomó hace 7 días. Abiertodocumentation
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
voidzero-dev/vite-plus#3219 · 2 comentarios · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
pending triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
voidzero-dev/vite-plus#2882 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
`vp migrate`: warn when the workspace uses TurborepoPosiblemente ocupada @voidzero-bot la tomó hace 1 día. Abierto- P3: minor bug enhancement triage: fix verified
Dificultad 2/5 1-3 horas Aptitud para principiantes 30/100
voidzero-dev/vite-plus#3298 · 1 comentario ·
Los mantenedores suelen responder en 1 día
Todos los issues de voidzero-dev/vite-plus
Issues similares
-
security
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
Waschndolos/open-clubmanager#185 ·
Los mantenedores suelen responder en 1 día
-
r-bug
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
servo/rust-smallvec#844 ·
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
farion1231/cc-switch#9122 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
lbjlaq/Antigravity-Manager#3801 ·
Los mantenedores suelen responder en 1 día
-
LIMIT inputs are named MIN/MAX instead of the standard MN/MX, so LIMIT(MN := ...) does not resolveAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día