diff options
author | Marvin Hagemeister <marvin@deno.com> | 2024-10-18 21:45:05 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-10-18 21:45:05 +0200 |
commit | 0e60bb9cf701fea3864403e6851abad86bc0b65d (patch) | |
tree | 628e0fb81761f795f915481ee688cde386b34eeb /cli/tools | |
parent | d047cab14b754d20a43c7119e327b451440aaed9 (diff) |
fix(info): resolve workspace member mappings (#26350)
This PR fixes the issue where mapped specifiers in a workspace member
would never be found. Only mapped paths from the workspace root would
resolve.
This was caused by always passing the workspace root url to the import
map resolver instead of the workspace member one.
Fixes https://github.com/denoland/deno/issues/26138
Fixes https://github.com/denoland/fresh/issues/2615
---------
Signed-off-by: Marvin Hagemeister <marvinhagemeister50@gmail.com>
Co-authored-by: David Sherret <dsherret@users.noreply.github.com>
Diffstat (limited to 'cli/tools')
-rw-r--r-- | cli/tools/info.rs | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/cli/tools/info.rs b/cli/tools/info.rs index 7f8d68ae1..3febaff57 100644 --- a/cli/tools/info.rs +++ b/cli/tools/info.rs @@ -11,6 +11,7 @@ use deno_core::anyhow::bail; use deno_core::error::AnyError; use deno_core::resolve_url_or_path; use deno_core::serde_json; +use deno_core::url; use deno_graph::Dependency; use deno_graph::GraphKind; use deno_graph::Module; @@ -51,18 +52,20 @@ pub async fn info( let npmrc = cli_options.npmrc(); let resolver = factory.workspace_resolver().await?; - let maybe_import_specifier = - if let Some(import_map) = resolver.maybe_import_map() { - if let Ok(imports_specifier) = - import_map.resolve(&specifier, import_map.base_url()) - { - Some(imports_specifier) - } else { - None - } + let cwd_url = + url::Url::from_directory_path(cli_options.initial_cwd()).unwrap(); + + let maybe_import_specifier = if let Some(import_map) = + resolver.maybe_import_map() + { + if let Ok(imports_specifier) = import_map.resolve(&specifier, &cwd_url) { + Some(imports_specifier) } else { None - }; + } + } else { + None + }; let specifier = match maybe_import_specifier { Some(specifier) => specifier, |