voidzero-dev / voidzero-dev/vite-plus

Orphaned BinConfig entries not cleaned up on package reinstall

Abierto
#1,370 1 comentario 0 reacciones 1 asignado Reclamado por @fengmk2 Ver en GitHub
Lenguaje dominante
Rust
Estrellas
5.8k
Forks
262
Merge medio
23 h 41 min
PR fusionados (30 d)
138

Descripción

## Problem

When a globally installed package removes a binary between versions (e.g., `typescript` drops `tsserver`), reinstalling the package via `vp install -g` does not prune the old `BinConfig` entry from `~/.vite-plus/bins/`.

These orphaned entries:
- Still resolve through `shim::dispatch` and then fail when the binary is no longer in `package.json`
- Get refreshed on every Windows upgrade by `refresh_package_shims()`, and can recreate `.exe` files even if manually removed

## Relevant code

- `crates/vite_global_cli/src/commands/env/global_install.rs` — reinstall path does not diff old vs new binaries
- `crates/vite_global_cli/src/commands/env/bin_config.rs` — `BinConfig` entries persist indefinitely
- `crates/vite_global_cli/src/shim/dispatch.rs` — resolves stale configs, then fails at runtime

## Expected behavior

When reinstalling a global package, compare the new set of binaries against the existing `BinConfig` entries for that package and remove any that are no longer provided.

Found during code review of #1349.

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.