diff --git a/.changeset/plenty-geckos-applaud.md b/.changeset/plenty-geckos-applaud.md new file mode 100644 index 0000000000..ae325065f9 --- /dev/null +++ b/.changeset/plenty-geckos-applaud.md @@ -0,0 +1,6 @@ +--- +"@pnpm/resolve-dependencies": patch +"pnpm": patch +--- + +Peers resolution should not fail when a linked in dependency resolves a peer dependency. diff --git a/pkg-manager/resolve-dependencies/src/resolvePeers.ts b/pkg-manager/resolve-dependencies/src/resolvePeers.ts index 94e5143308..cec217b77e 100644 --- a/pkg-manager/resolve-dependencies/src/resolvePeers.ts +++ b/pkg-manager/resolve-dependencies/src/resolvePeers.ts @@ -279,6 +279,9 @@ function resolvePeersOfNode ( ctx.pathsByNodeId[cachedNodeId] && ctx.pathsByNodeId[cachedNodeId] === ctx.pathsByNodeId[parentPkgNodeId] ) return true + if (!ctx.dependenciesTree[parentPkgNodeId] && parentPkgNodeId.startsWith('link:')) { + return false + } const parentDepPath = (ctx.dependenciesTree[parentPkgNodeId].resolvedPackage as T).depPath if (!ctx.purePkgs.has(parentDepPath)) return false const cachedDepPath = (ctx.dependenciesTree[cachedNodeId].resolvedPackage as T).depPath