summaryrefslogtreecommitdiff
path: root/cli/tools/registry/pm.rs
diff options
context:
space:
mode:
authorNathan Whitaker <17734409+nathanwhit@users.noreply.github.com>2024-08-21 15:23:32 -0700
committerGitHub <noreply@github.com>2024-08-21 15:23:32 -0700
commit48da3c17ea905f50b82948e6f94795e1589f852e (patch)
treee65d5da97ef0cd4b9f67972b8ba647420d39952e /cli/tools/registry/pm.rs
parent9aaad3064a412b24e88e308750e038d4e1df6f3c (diff)
fix(add): Handle packages without root exports (#25102)
Fixes #24607. This PR makes the logic that caches top level dependencies (things present in import map) smarter, so we handle JSR dependencies without root exports.
Diffstat (limited to 'cli/tools/registry/pm.rs')
-rw-r--r--cli/tools/registry/pm.rs25
1 files changed, 16 insertions, 9 deletions
diff --git a/cli/tools/registry/pm.rs b/cli/tools/registry/pm.rs
index 3cdef071f..87a5ea69a 100644
--- a/cli/tools/registry/pm.rs
+++ b/cli/tools/registry/pm.rs
@@ -1,5 +1,9 @@
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
+mod cache_deps;
+
+pub use cache_deps::cache_top_level_deps;
+
use std::borrow::Cow;
use std::path::Path;
use std::path::PathBuf;
@@ -236,13 +240,16 @@ pub async fn add(
let package_futures = package_reqs
.into_iter()
- .map(move |package_req| {
- find_package_and_select_version_for_req(
- jsr_resolver.clone(),
- npm_resolver.clone(),
- package_req,
- )
- .boxed_local()
+ .map({
+ let jsr_resolver = jsr_resolver.clone();
+ move |package_req| {
+ find_package_and_select_version_for_req(
+ jsr_resolver.clone(),
+ npm_resolver.clone(),
+ package_req,
+ )
+ .boxed_local()
+ }
})
.collect::<Vec<_>>();
@@ -350,7 +357,7 @@ pub async fn add(
// make a new CliFactory to pick up the updated config file
let cli_factory = CliFactory::from_flags(flags);
// cache deps
- crate::module_loader::load_top_level_deps(&cli_factory).await?;
+ cache_deps::cache_top_level_deps(&cli_factory, Some(jsr_resolver)).await?;
Ok(())
}
@@ -597,7 +604,7 @@ pub async fn remove(
// Update deno.lock
node_resolver::PackageJsonThreadLocalCache::clear();
let cli_factory = CliFactory::from_flags(flags);
- crate::module_loader::load_top_level_deps(&cli_factory).await?;
+ cache_deps::cache_top_level_deps(&cli_factory, None).await?;
}
Ok(())