diff --git a/crates/vite_pm_cli/src/handlers.rs b/crates/vite_pm_cli/src/handlers.rs index cd8c9b7e18..3ed2eec5a0 100644 --- a/crates/vite_pm_cli/src/handlers.rs +++ b/crates/vite_pm_cli/src/handlers.rs @@ -43,7 +43,10 @@ use vite_path::AbsolutePath; use crate::{ cli::{ConfigCommands, DistTagCommands, OwnerCommands, PmCommands, TokenCommands}, error::Error, - helpers::{build_package_manager, build_package_manager_or_npm_default, ensure_package_json}, + helpers::{ + build_package_manager, build_package_manager_or_npm_default, default_npm_package_manager, + ensure_package_json, + }, }; pub async fn run_add( @@ -92,7 +95,11 @@ pub async fn run_outdated( cwd: &AbsolutePath, options: &OutdatedCommandOptions<'_>, ) -> Result { - let pm = build_package_manager(cwd).await?; + let pm = if options.global { + default_npm_package_manager(cwd) + } else { + build_package_manager(cwd).await? + }; Ok(pm.run_outdated_command(options, cwd).await?) } @@ -100,7 +107,11 @@ pub async fn run_why( cwd: &AbsolutePath, options: &WhyCommandOptions<'_>, ) -> Result { - let pm = build_package_manager(cwd).await?; + let pm = if options.global { + default_npm_package_manager(cwd) + } else { + build_package_manager(cwd).await? + }; Ok(pm.run_why_command(options, cwd).await?) } diff --git a/crates/vite_pm_cli/src/helpers.rs b/crates/vite_pm_cli/src/helpers.rs index fdf35f39a9..2c87a7c365 100644 --- a/crates/vite_pm_cli/src/helpers.rs +++ b/crates/vite_pm_cli/src/helpers.rs @@ -37,7 +37,7 @@ pub async fn build_package_manager_or_npm_default( } } -fn default_npm_package_manager(cwd: &AbsolutePath) -> PackageManager { +pub(crate) fn default_npm_package_manager(cwd: &AbsolutePath) -> PackageManager { PackageManager { client: PackageManagerType::Npm, package_name: "npm".into(), diff --git a/packages/cli/snap-tests/command-pm-no-package-json/snap.txt b/packages/cli/snap-tests/command-pm-no-package-json/snap.txt index 2707e25d5e..cca707ab25 100644 --- a/packages/cli/snap-tests/command-pm-no-package-json/snap.txt +++ b/packages/cli/snap-tests/command-pm-no-package-json/snap.txt @@ -9,3 +9,16 @@ error: No package.json found. [1]> vp why lodash # should show friendly error error: No package.json found. + +> vp outdated definitely-not-installed-vite-plus-snap-pkg -g --format json # should not require package.json for global outdated +{} + +[1]> vp why definitely-not-installed-vite-plus-snap-pkg -g --json # should not require package.json for global why +npm error No dependencies found matching definitely-not-installed-vite-plus-snap-pkg +{ + "error": { + "summary": "No dependencies found matching definitely-not-installed-vite-plus-snap-pkg", + "detail": "" + } +} +npm error A complete log of this run can be found in: /.npm/_logs/-debug.log diff --git a/packages/cli/snap-tests/command-pm-no-package-json/steps.json b/packages/cli/snap-tests/command-pm-no-package-json/steps.json index 4710180dbb..f1c5f05d3c 100644 --- a/packages/cli/snap-tests/command-pm-no-package-json/steps.json +++ b/packages/cli/snap-tests/command-pm-no-package-json/steps.json @@ -1,8 +1,11 @@ { + "ignoredPlatforms": ["win32"], "commands": [ "vp pm ls # should show friendly error", "vp pm prune # should show friendly error", "vp outdated # should show friendly error", - "vp why lodash # should show friendly error" + "vp why lodash # should show friendly error", + "vp outdated definitely-not-installed-vite-plus-snap-pkg -g --format json # should not require package.json for global outdated", + "vp why definitely-not-installed-vite-plus-snap-pkg -g --json # should not require package.json for global why" ] }