From c6d1b0a1ccf45b7819b1e6f1efe8687b240f495a Mon Sep 17 00:00:00 2001 From: David Sherret Date: Wed, 4 Sep 2024 16:00:44 +0200 Subject: 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/` for better package.json compatiblity. --- cli/tsc/mod.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'cli/tsc') diff --git a/cli/tsc/mod.rs b/cli/tsc/mod.rs index cf7a55d8c..1b443cafd 100644 --- a/cli/tsc/mod.rs +++ b/cli/tsc/mod.rs @@ -795,7 +795,7 @@ fn resolve_graph_specifier_types( } fn resolve_non_graph_specifier_types( - specifier: &str, + raw_specifier: &str, referrer: &ModuleSpecifier, referrer_kind: NodeModuleKind, state: &State, @@ -810,14 +810,16 @@ fn resolve_non_graph_specifier_types( Ok(Some(NodeResolution::into_specifier_and_media_type( node_resolver .resolve( - specifier, + raw_specifier, referrer, referrer_kind, NodeResolutionMode::Types, ) .ok(), ))) - } else if let Ok(npm_req_ref) = NpmPackageReqReference::from_str(specifier) { + } else if let Ok(npm_req_ref) = + NpmPackageReqReference::from_str(raw_specifier) + { debug_assert_eq!(referrer_kind, NodeModuleKind::Esm); // todo(dsherret): add support for injecting this in the graph so // we don't need this special code here. -- cgit v1.2.3