Skip to content

Orphaned BinConfig entries not cleaned up on package reinstall #1370

@fengmk2

Description

@fengmk2

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.rsBinConfig 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.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

Priority

None yet

Effort

None yet

Target date

None yet

Start date

None yet

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions