summaryrefslogtreecommitdiff
path: root/cli/npm/managed/mod.rs
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2024-07-15 15:08:51 -0400
committerGitHub <noreply@github.com>2024-07-15 15:08:51 -0400
commit29186d7e5963f2398b28ee2c043b27e4881075ef (patch)
treea493deaa8bd06aa3a093455c60f90cddbf556287 /cli/npm/managed/mod.rs
parent70a9631696d98c3a1158164c4690d0a1e38c1378 (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.rs20
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(