fix(arborist): dependencies from registries with a peerDependency on a workspace #6193
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Currently if you attempt to install a package from a registry that has a peer dependency on a package published from a workspace in your local project, you are presented with the error (even if all specs match and there are no version conflicts):
This is an edge case, but something we've come across frequently due to having multiple repos publishing packages (e.g. strongly typed clients) where occasionally a cyclic dependency exists within the type system (which TypeScript can handle once we have the packages installed).
This does not affect packages referred to by path as these are handled by: https://github.com/npm/cli/blob/latest/workspaces/arborist/lib/arborist/build-ideal-tree.js#L1236-L1238
The issue appears to be https://github.com/npm/cli/blob/latest/workspaces/arborist/lib/arborist/build-ideal-tree.js#L1245-L1247 where we find a suitable existing node, but then immediately throw it away, returning the unresolved
edge.to
.I believe this is a typo and returning
existingNode
is the desired behaviour? I've added a test case that fails without this change.