Skip to content

Commit

Permalink
fix: don't override root deps when auto installing peers
Browse files Browse the repository at this point in the history
close #5412
  • Loading branch information
zkochan committed Oct 2, 2022
1 parent d30f3ac commit 74e9296
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 4 deletions.
6 changes: 6 additions & 0 deletions .changeset/slow-panthers-refuse.md
@@ -0,0 +1,6 @@
---
"@pnpm/resolve-dependencies": patch
"pnpm": patch
---

Don't override the root dependency when auto installing peer dependencies [#5412](https://github.com/pnpm/pnpm/issues/5412).
11 changes: 7 additions & 4 deletions packages/resolve-dependencies/src/resolveDependencies.ts
Expand Up @@ -302,7 +302,7 @@ export async function resolveRootDependencies (
})
importerResolutionResult = {
pkgAddresses: resolveDependenciesResult.pkgAddresses,
...(await resolveDependenciesResult.resolvingPeers),
...filterMissingPeers(await resolveDependenciesResult.resolvingPeers, parentPkgAliases),
}
pkgAddresses.push(...importerResolutionResult.pkgAddresses)
}
Expand Down Expand Up @@ -680,7 +680,7 @@ async function resolveDependenciesOfDependency (
postponedPeersResolution: resolveDependencyResult.missingPeersOfChildren != null
? async (parentPkgAliases) => {
const missingPeers = await resolveDependencyResult.missingPeersOfChildren!.get()
return filterMissingPeers(missingPeers, {}, parentPkgAliases)
return filterMissingPeers({ missingPeers, resolvedPeers: {} }, parentPkgAliases)
}
: undefined,
}
Expand All @@ -698,12 +698,15 @@ async function resolveDependenciesOfDependency (
postponedResolution: async (postponedResolutionOpts) => {
const { missingPeers, resolvedPeers } = await postponedResolution(postponedResolutionOpts)
resolveDependencyResult.missingPeersOfChildren!.resolve(missingPeers)
return filterMissingPeers(missingPeers, resolvedPeers, postponedResolutionOpts.parentPkgAliases)
return filterMissingPeers({ missingPeers, resolvedPeers }, postponedResolutionOpts.parentPkgAliases)
},
}
}

function filterMissingPeers (missingPeers: MissingPeers, resolvedPeers: ResolvedPeers, parentPkgAliases: ParentPkgAliases): PeersResolutionResult {
function filterMissingPeers (
{ missingPeers, resolvedPeers }: PeersResolutionResult,
parentPkgAliases: ParentPkgAliases
): PeersResolutionResult {
const newMissing = {} as MissingPeers
for (const [peerName, peerVersion] of Object.entries(missingPeers)) {
if (parentPkgAliases[peerName]) {
Expand Down

0 comments on commit 74e9296

Please sign in to comment.