Skip to content

Commit ba99b5b

Browse files
committed
Fix: Add implicit self-dependencies to node-modules package maps
When nodeExperimentalPackageMap is enabled, packages that rely on a self symlink can now correctly resolve their own name under standard enforcement. The node-modules package map builder now adds an implicit self-dependency for non-workspace packages when there's no explicit self-dependency, mirroring the behavior of the pnpm linker. This ensures parity between both linkers' package map generation within the same PR.
1 parent f3364ae commit ba99b5b

1 file changed

Lines changed: 9 additions & 2 deletions

File tree

packages/zpm/src/linker/package_map.rs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -267,9 +267,16 @@ fn get_package_dependency_names(project: &Project, install: &Install, locator: &
267267
let tree
268268
= &install.install_state.resolution_tree;
269269

270-
resolution_dependency_names(tree, locator)
270+
let mut dependency_names = resolution_dependency_names(tree, locator)
271271
.or_else(|| workspace_link_dependency_names(project, tree, locator))
272-
.unwrap_or_default()
272+
.unwrap_or_default();
273+
274+
// Add implicit self-dependency for non-workspace packages when there's no explicit self-dependency
275+
if !locator.reference.is_workspace_reference() && !dependency_names.contains(locator.ident.as_str()) {
276+
dependency_names.insert(locator.ident.as_str().to_string());
277+
}
278+
279+
dependency_names
273280
}
274281

275282
fn resolution_dependency_names(tree: &ResolutionTree, locator: &Locator) -> Option<BTreeSet<String>> {

0 commit comments

Comments
 (0)