diff options
| author | David Sherret <dsherret@users.noreply.github.com> | 2023-02-21 12:03:48 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-02-21 12:03:48 -0500 |
| commit | 3479bc76613761cf31f7557d482e691274c365f1 (patch) | |
| tree | cd608c4206d61cde4141ea3ecfe5f4ef285b1d80 /cli/tsc | |
| parent | 608c855f1166e0ed76762fd9afd00bb52cc65032 (diff) | |
fix(npm): improve peer dependency resolution (#17835)
This PR fixes peer dependency resolution to only resolve peers based on
the current graph traversal path. Previously, it would resolve a peers
by looking at a graph node's ancestors, which is not correct because
graph nodes are shared by different resolutions.
It also stores more information about peer dependency resolution in the
lockfile.
Diffstat (limited to 'cli/tsc')
| -rw-r--r-- | cli/tsc/mod.rs | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/cli/tsc/mod.rs b/cli/tsc/mod.rs index afa301ce8..00186ca3b 100644 --- a/cli/tsc/mod.rs +++ b/cli/tsc/mod.rs @@ -28,7 +28,7 @@ use deno_core::ModuleSpecifier; use deno_core::OpState; use deno_core::RuntimeOptions; use deno_core::Snapshot; -use deno_graph::npm::NpmPackageReference; +use deno_graph::npm::NpmPackageReqReference; use deno_graph::ModuleGraph; use deno_graph::ModuleKind; use deno_graph::ResolutionResolved; @@ -654,7 +654,7 @@ fn op_resolve( if module.kind == ModuleKind::External { // handle npm:<package> urls if let Ok(npm_ref) = - NpmPackageReference::from_specifier(&module.specifier) + NpmPackageReqReference::from_specifier(&module.specifier) { if let Some(npm_resolver) = &state.maybe_npm_resolver { Some(resolve_npm_package_reference_types( @@ -689,7 +689,8 @@ fn op_resolve( .ok() .flatten(), )) - } else if let Ok(npm_ref) = NpmPackageReference::from_str(&specifier) + } else if let Ok(npm_ref) = + NpmPackageReqReference::from_str(&specifier) { // this could occur when resolving npm:@types/node when it is // injected and not part of the graph @@ -740,7 +741,7 @@ fn op_resolve( } pub fn resolve_npm_package_reference_types( - npm_ref: &NpmPackageReference, + npm_ref: &NpmPackageReqReference, npm_resolver: &NpmPackageResolver, ) -> Result<(ModuleSpecifier, MediaType), AnyError> { let maybe_resolution = node_resolve_npm_reference( |
