From 91163914796aa17941609e1905ac373406156f40 Mon Sep 17 00:00:00 2001 From: Liang Date: Fri, 24 Jul 2026 09:25:15 +0800 Subject: [PATCH 1/2] fix(global): clarify installs without package version Render absent package versions as '(no version)' in global install success output while retaining 'unknown' in stored metadata. Cover the behavior in the global local-package snapshot. --- .../command_env_install_global_local/package.json | 1 - .../snapshots/command_env_install_global_local.md | 8 ++++---- crates/vite_global_cli/src/commands/global/install.rs | 11 ++++++----- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/crates/vite_cli_snapshots/tests/cli_snapshots/fixtures/command_env_install_global_local/package.json b/crates/vite_cli_snapshots/tests/cli_snapshots/fixtures/command_env_install_global_local/package.json index ce66fe0be3..464bca6a29 100644 --- a/crates/vite_cli_snapshots/tests/cli_snapshots/fixtures/command_env_install_global_local/package.json +++ b/crates/vite_cli_snapshots/tests/cli_snapshots/fixtures/command_env_install_global_local/package.json @@ -1,6 +1,5 @@ { "name": "just-a-normal-package", - "version": "0.0.0", "bin": { "just-a-normal-package": "./bin.js" } diff --git a/crates/vite_cli_snapshots/tests/cli_snapshots/fixtures/command_env_install_global_local/snapshots/command_env_install_global_local.md b/crates/vite_cli_snapshots/tests/cli_snapshots/fixtures/command_env_install_global_local/snapshots/command_env_install_global_local.md index d13e7e066e..b35fab7854 100644 --- a/crates/vite_cli_snapshots/tests/cli_snapshots/fixtures/command_env_install_global_local/snapshots/command_env_install_global_local.md +++ b/crates/vite_cli_snapshots/tests/cli_snapshots/fixtures/command_env_install_global_local/snapshots/command_env_install_global_local.md @@ -6,7 +6,7 @@ VITE+ - The Unified Toolchain for the Web info: Installing 1 global package with Node.js -✓ Installed just-a-normal-package 0.0.0 +✓ Installed just-a-normal-package (no version) Bins: just-a-normal-package ``` @@ -23,9 +23,9 @@ info: Installing 1 global package with Node.js ## `vp list -g just-a-normal-package` ``` -Package Node version Binaries ---- --- --- -just-a-normal-package@0.0.0 24.18.0 just-a-normal-package +Package Node version Binaries +--- --- --- +just-a-normal-package@unknown 24.18.0 just-a-normal-package ``` ## `vp list -g another-normal-package` diff --git a/crates/vite_global_cli/src/commands/global/install.rs b/crates/vite_global_cli/src/commands/global/install.rs index d2618c5314..3dcc139b26 100644 --- a/crates/vite_global_cli/src/commands/global/install.rs +++ b/crates/vite_global_cli/src/commands/global/install.rs @@ -38,7 +38,7 @@ struct Package<'a> { } struct InstalledPackage { - installed_version: String, + installed_version: Option, bin_names: Vec, js_bins: HashSet, install_id: String, @@ -393,10 +393,11 @@ pub async fn install( continue; } }; + let metadata_version = installed_version.as_deref().unwrap_or("unknown"); let mut metadata = PackageMetadata::new( package_name.clone(), - installed_version.clone(), + metadata_version.to_string(), node_version.clone(), None, bin_names.clone(), @@ -461,7 +462,7 @@ pub async fn install( BinConfig::new( bin_name.clone(), package_name.clone(), - installed_version.clone(), + metadata_version.to_string(), node_version.clone(), ) .save() @@ -504,7 +505,7 @@ pub async fn install( operation_past, package_name.bold(), if update { "to " } else { "" }, - installed_version.bold() + installed_version.as_deref().unwrap_or("(no version)").bold() )); if !bin_names.is_empty() { let bins = bin_names @@ -589,7 +590,7 @@ async fn install_one( } }; - let installed_version = package_json["version"].as_str().unwrap_or("unknown").to_string(); + let installed_version = package_json["version"].as_str().map(ToString::to_string); let binary_infos = extract_binaries(&package_json); let mut bin_names = Vec::new(); From 49729ead70ea29cae91eddd2bec5366be39d2337 Mon Sep 17 00:00:00 2001 From: Liang Date: Fri, 24 Jul 2026 09:28:49 +0800 Subject: [PATCH 2/2] test(global): isolate no-version install snapshot Restore the existing local-install fixture to its versioned coverage and add a dedicated fixture for packages without a version. --- .../package.json | 1 + .../command_env_install_global_local.md | 8 ++++---- .../bin.js | 1 + .../package.json | 6 ++++++ .../snapshots.toml | 10 ++++++++++ ...and_env_install_global_local_no_version.md | 19 +++++++++++++++++++ 6 files changed, 41 insertions(+), 4 deletions(-) create mode 100644 crates/vite_cli_snapshots/tests/cli_snapshots/fixtures/command_env_install_global_local_no_version/bin.js create mode 100644 crates/vite_cli_snapshots/tests/cli_snapshots/fixtures/command_env_install_global_local_no_version/package.json create mode 100644 crates/vite_cli_snapshots/tests/cli_snapshots/fixtures/command_env_install_global_local_no_version/snapshots.toml create mode 100644 crates/vite_cli_snapshots/tests/cli_snapshots/fixtures/command_env_install_global_local_no_version/snapshots/command_env_install_global_local_no_version.md diff --git a/crates/vite_cli_snapshots/tests/cli_snapshots/fixtures/command_env_install_global_local/package.json b/crates/vite_cli_snapshots/tests/cli_snapshots/fixtures/command_env_install_global_local/package.json index 464bca6a29..ce66fe0be3 100644 --- a/crates/vite_cli_snapshots/tests/cli_snapshots/fixtures/command_env_install_global_local/package.json +++ b/crates/vite_cli_snapshots/tests/cli_snapshots/fixtures/command_env_install_global_local/package.json @@ -1,5 +1,6 @@ { "name": "just-a-normal-package", + "version": "0.0.0", "bin": { "just-a-normal-package": "./bin.js" } diff --git a/crates/vite_cli_snapshots/tests/cli_snapshots/fixtures/command_env_install_global_local/snapshots/command_env_install_global_local.md b/crates/vite_cli_snapshots/tests/cli_snapshots/fixtures/command_env_install_global_local/snapshots/command_env_install_global_local.md index b35fab7854..d13e7e066e 100644 --- a/crates/vite_cli_snapshots/tests/cli_snapshots/fixtures/command_env_install_global_local/snapshots/command_env_install_global_local.md +++ b/crates/vite_cli_snapshots/tests/cli_snapshots/fixtures/command_env_install_global_local/snapshots/command_env_install_global_local.md @@ -6,7 +6,7 @@ VITE+ - The Unified Toolchain for the Web info: Installing 1 global package with Node.js -✓ Installed just-a-normal-package (no version) +✓ Installed just-a-normal-package 0.0.0 Bins: just-a-normal-package ``` @@ -23,9 +23,9 @@ info: Installing 1 global package with Node.js ## `vp list -g just-a-normal-package` ``` -Package Node version Binaries ---- --- --- -just-a-normal-package@unknown 24.18.0 just-a-normal-package +Package Node version Binaries +--- --- --- +just-a-normal-package@0.0.0 24.18.0 just-a-normal-package ``` ## `vp list -g another-normal-package` diff --git a/crates/vite_cli_snapshots/tests/cli_snapshots/fixtures/command_env_install_global_local_no_version/bin.js b/crates/vite_cli_snapshots/tests/cli_snapshots/fixtures/command_env_install_global_local_no_version/bin.js new file mode 100644 index 0000000000..09a50e9911 --- /dev/null +++ b/crates/vite_cli_snapshots/tests/cli_snapshots/fixtures/command_env_install_global_local_no_version/bin.js @@ -0,0 +1 @@ +console.log('The package is installed successfully'); diff --git a/crates/vite_cli_snapshots/tests/cli_snapshots/fixtures/command_env_install_global_local_no_version/package.json b/crates/vite_cli_snapshots/tests/cli_snapshots/fixtures/command_env_install_global_local_no_version/package.json new file mode 100644 index 0000000000..8027860c5c --- /dev/null +++ b/crates/vite_cli_snapshots/tests/cli_snapshots/fixtures/command_env_install_global_local_no_version/package.json @@ -0,0 +1,6 @@ +{ + "name": "global-local-no-version", + "bin": { + "global-local-no-version": "./bin.js" + } +} diff --git a/crates/vite_cli_snapshots/tests/cli_snapshots/fixtures/command_env_install_global_local_no_version/snapshots.toml b/crates/vite_cli_snapshots/tests/cli_snapshots/fixtures/command_env_install_global_local_no_version/snapshots.toml new file mode 100644 index 0000000000..547ab5fc1a --- /dev/null +++ b/crates/vite_cli_snapshots/tests/cli_snapshots/fixtures/command_env_install_global_local_no_version/snapshots.toml @@ -0,0 +1,10 @@ +[[case]] +name = "command_env_install_global_local_no_version" +vp = "global" +steps = [ + { argv = ["vp", "install", "-g", "."], continue-on-failure = true }, + { argv = ["vp", "list", "-g", "global-local-no-version"], continue-on-failure = true }, +] +after = [ + { argv = ["vp", "remove", "-g", "global-local-no-version"], continue-on-failure = true }, +] diff --git a/crates/vite_cli_snapshots/tests/cli_snapshots/fixtures/command_env_install_global_local_no_version/snapshots/command_env_install_global_local_no_version.md b/crates/vite_cli_snapshots/tests/cli_snapshots/fixtures/command_env_install_global_local_no_version/snapshots/command_env_install_global_local_no_version.md new file mode 100644 index 0000000000..bc137bf1f7 --- /dev/null +++ b/crates/vite_cli_snapshots/tests/cli_snapshots/fixtures/command_env_install_global_local_no_version/snapshots/command_env_install_global_local_no_version.md @@ -0,0 +1,19 @@ +# command_env_install_global_local_no_version + +## `vp install -g .` + +``` +VITE+ - The Unified Toolchain for the Web + +info: Installing 1 global package with Node.js +✓ Installed global-local-no-version (no version) + Bins: global-local-no-version +``` + +## `vp list -g global-local-no-version` + +``` +Package Node version Binaries +--- --- --- +global-local-no-version@unknown 24.18.0 global-local-no-version +```