diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2024-09-04 16:00:44 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-04 14:00:44 +0000 |
commit | c6d1b0a1ccf45b7819b1e6f1efe8687b240f495a (patch) | |
tree | 6be2c0c611e4aee950402a34aaedd1c9b6bcaac3 /cli/resolver.rs | |
parent | 13911eb8efb77bd14a80412072aecb664aa55fd5 (diff) |
fix(byonm): resolve npm deps of jsr deps (#25399)
This allows using npm deps of jsr deps without having to add them to the
root package.json.
Works by taking the package requirement and scanning the
`node_modules/.deno` directory for the best matching package, so it
relies on deno's node_modules structure.
Additionally to make the transition from package.json to deno.json
easier, Deno now:
1. Installs npm deps in a deno.json at the same time as installing npm
deps from a package.json.
2. Uses the alias in the import map for `node_modules/<alias>` for
better package.json compatiblity.
Diffstat (limited to 'cli/resolver.rs')
-rw-r--r-- | cli/resolver.rs | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/cli/resolver.rs b/cli/resolver.rs index 3f5f79f77..987e23ee1 100644 --- a/cli/resolver.rs +++ b/cli/resolver.rs @@ -502,7 +502,7 @@ impl Resolver for CliGraphResolver { fn resolve( &self, - specifier: &str, + raw_specifier: &str, referrer_range: &deno_graph::Range, mode: ResolutionMode, ) -> Result<ModuleSpecifier, ResolveError> { @@ -519,7 +519,7 @@ impl Resolver for CliGraphResolver { if let Some(node_resolver) = self.node_resolver.as_ref() { if referrer.scheme() == "file" && node_resolver.in_npm_package(referrer) { return node_resolver - .resolve(specifier, referrer, to_node_mode(mode)) + .resolve(raw_specifier, referrer, to_node_mode(mode)) .map(|res| res.into_url()) .map_err(|e| ResolveError::Other(e.into())); } @@ -528,7 +528,7 @@ impl Resolver for CliGraphResolver { // Attempt to resolve with the workspace resolver let result: Result<_, ResolveError> = self .workspace_resolver - .resolve(specifier, referrer) + .resolve(raw_specifier, referrer) .map_err(|err| match err { MappedResolutionError::Specifier(err) => ResolveError::Specifier(err), MappedResolutionError::ImportMap(err) => { @@ -700,7 +700,7 @@ impl Resolver for CliGraphResolver { // If byonm, check if the bare specifier resolves to an npm package if is_byonm && referrer.scheme() == "file" { let maybe_resolution = node_resolver - .resolve_if_for_npm_pkg(specifier, referrer, to_node_mode(mode)) + .resolve_if_for_npm_pkg(raw_specifier, referrer, to_node_mode(mode)) .map_err(ResolveError::Other)?; if let Some(res) = maybe_resolution { return Ok(res.into_url()); |