diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2024-07-15 15:08:51 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-15 15:08:51 -0400 |
commit | 29186d7e5963f2398b28ee2c043b27e4881075ef (patch) | |
tree | a493deaa8bd06aa3a093455c60f90cddbf556287 /cli/npm/managed/mod.rs | |
parent | 70a9631696d98c3a1158164c4690d0a1e38c1378 (diff) |
fix(workspace): do not resolve to self for npm pkg depending on matching req (#24591)
Closes #24584
Diffstat (limited to 'cli/npm/managed/mod.rs')
-rw-r--r-- | cli/npm/managed/mod.rs | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/cli/npm/managed/mod.rs b/cli/npm/managed/mod.rs index 76645d1d6..1020a57e9 100644 --- a/cli/npm/managed/mod.rs +++ b/cli/npm/managed/mod.rs @@ -475,24 +475,30 @@ impl ManagedCliNpmResolver { if !self.top_level_install_flag.raise() { return Ok(false); // already did this } - let reqs = self.package_json_deps_provider.remote_pkg_reqs(); - if reqs.is_empty() { + let pkg_json_remote_pkgs = self.package_json_deps_provider.remote_pkgs(); + if pkg_json_remote_pkgs.is_empty() { return Ok(false); } // check if something needs resolving before bothering to load all // the package information (which is slow) - if reqs - .iter() - .all(|req| self.resolution.resolve_pkg_id_from_pkg_req(req).is_ok()) - { + if pkg_json_remote_pkgs.iter().all(|pkg| { + self + .resolution + .resolve_pkg_id_from_pkg_req(&pkg.req) + .is_ok() + }) { log::debug!( "All package.json deps resolvable. Skipping top level install." ); return Ok(false); // everything is already resolvable } - self.add_package_reqs(reqs).await.map(|_| true) + let pkg_reqs = pkg_json_remote_pkgs + .iter() + .map(|pkg| pkg.req.clone()) + .collect::<Vec<_>>(); + self.add_package_reqs(&pkg_reqs).await.map(|_| true) } pub async fn cache_package_info( |