diff options
Diffstat (limited to 'cli/resolver.rs')
-rw-r--r-- | cli/resolver.rs | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/cli/resolver.rs b/cli/resolver.rs index db6ef0c8e..bcc1c8da8 100644 --- a/cli/resolver.rs +++ b/cli/resolver.rs @@ -113,22 +113,30 @@ impl Resolver for CliGraphResolver { specifier: &str, referrer: &ModuleSpecifier, ) -> Result<ModuleSpecifier, AnyError> { - if let Some(import_map) = &self.maybe_import_map { - return import_map - .resolve(specifier, referrer) - .map_err(|err| err.into()); - } + // attempt to resolve with the import map first + let maybe_import_map_err = match self + .maybe_import_map + .as_ref() + .map(|import_map| import_map.resolve(specifier, referrer)) + { + Some(Ok(value)) => return Ok(value), + Some(Err(err)) => Some(err), + None => None, + }; + // then with package.json if let Some(deps) = self.maybe_package_json_deps.as_ref() { if let Some(specifier) = resolve_package_json_dep(specifier, deps)? { return Ok(specifier); } - if let Some(req) = deps.get(specifier) { - return Ok(ModuleSpecifier::parse(&format!("npm:{req}")).unwrap()); - } } - deno_graph::resolve_import(specifier, referrer).map_err(|err| err.into()) + // otherwise, surface the import map error or try resolving when has no import map + if let Some(err) = maybe_import_map_err { + Err(err.into()) + } else { + deno_graph::resolve_import(specifier, referrer).map_err(|err| err.into()) + } } } |