diff --git a/.changeset/smooth-dancers-knock.md b/.changeset/smooth-dancers-knock.md new file mode 100644 index 0000000000..0316bd15c0 --- /dev/null +++ b/.changeset/smooth-dancers-knock.md @@ -0,0 +1,5 @@ +--- +"@pnpm/resolve-dependencies": patch +--- + +Do not skip a package's peer resolution if it was previously resolved w/o peer dependencies but in the new node it has peer dependencies. diff --git a/packages/resolve-dependencies/src/resolvePeers.ts b/packages/resolve-dependencies/src/resolvePeers.ts index 9dab3e0436..e0bc7a615e 100644 --- a/packages/resolve-dependencies/src/resolvePeers.ts +++ b/packages/resolve-dependencies/src/resolvePeers.ts @@ -149,7 +149,11 @@ function resolvePeersOfNode ( const node = ctx.dependenciesTree[nodeId] if (node.depth === -1) return { resolvedPeers: {}, missingPeers: [] } const resolvedPackage = node.resolvedPackage as T - if (ctx.purePkgs.has(resolvedPackage.depPath) && ctx.depGraph[resolvedPackage.depPath].depth <= node.depth) { + if ( + ctx.purePkgs.has(resolvedPackage.depPath) && + ctx.depGraph[resolvedPackage.depPath].depth <= node.depth && + R.isEmpty(resolvedPackage.peerDependencies) + ) { ctx.pathsByNodeId[nodeId] = resolvedPackage.depPath return { resolvedPeers: {}, missingPeers: [] } }