From e8dcc42d56ed78a8582baccd6d641348608ddf70 Mon Sep 17 00:00:00 2001 From: Zoltan Kochan Date: Thu, 15 Oct 2020 00:33:15 +0300 Subject: [PATCH] fix: peers resolution ref #2919 --- .changeset/smooth-dancers-knock.md | 5 +++++ packages/resolve-dependencies/src/resolvePeers.ts | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 .changeset/smooth-dancers-knock.md 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: [] } }