diff --git a/packages/resolve-dependencies/src/resolveDependencyTree.ts b/packages/resolve-dependencies/src/resolveDependencyTree.ts index 0627bfbc63..ed9acc895e 100644 --- a/packages/resolve-dependencies/src/resolveDependencyTree.ts +++ b/packages/resolve-dependencies/src/resolveDependencyTree.ts @@ -230,7 +230,7 @@ function buildTree ( childrenNodeIds[child.alias] = child.depPath continue } - if (nodeIdContainsSequence(parentNodeId, parentId, child.depPath)) { + if (nodeIdContainsSequence(parentNodeId, parentId, child.depPath) || parentId === child.depPath) { continue } const childNodeId = createNodeId(parentNodeId, child.depPath) diff --git a/packages/resolve-dependencies/src/resolvePeers.ts b/packages/resolve-dependencies/src/resolvePeers.ts index 24550176b8..98495efa58 100644 --- a/packages/resolve-dependencies/src/resolvePeers.ts +++ b/packages/resolve-dependencies/src/resolvePeers.ts @@ -191,10 +191,10 @@ function resolvePeersOfNode ( : { ...parentParentPkgs, ...toPkgByName( - Object.keys(children).map((alias) => ({ + Object.entries(children).map(([alias, nodeId]) => ({ alias, - node: ctx.dependenciesTree[children[alias]], - nodeId: children[alias], + node: ctx.dependenciesTree[nodeId], + nodeId, })) ), } @@ -339,9 +339,12 @@ function getPreviouslyResolvedChildren (nodeId nodeIdChunks.reduce((accNodeId, part) => { accNodeId += `>${part}>${ownId}` const parentNode = dependenciesTree[`${accNodeId}>`] + if (typeof parentNode.children === 'function') { + parentNode.children = parentNode.children() + } Object.assign( allChildren, - typeof parentNode.children === 'function' ? parentNode.children() : parentNode.children + parentNode.children ) return accNodeId }, '')