fix: always group package with its peer dependency

...even if the peer dependency is resolved from the direct parent

ref #1217
This commit is contained in:
Zoltan Kochan
2018-06-14 17:22:16 +03:00
committed by Zoltan Kochan
parent a1ae9016c4
commit b7442285e7
4 changed files with 17 additions and 8 deletions

View File

@@ -102,7 +102,7 @@
"npm-scripts-info": "^0.3.6",
"package-preview": "^1.0.0",
"path-name": "^1.0.0",
"pnpm-registry-mock": "^2.0.0",
"pnpm-registry-mock": "^2.1.0",
"read-pkg": "^3.0.0",
"rimraf": "^2.6.2",
"sepia": "^2.0.2",

View File

@@ -82,7 +82,7 @@ devDependencies:
npm-scripts-info: 0.3.7
package-preview: 1.0.6
path-name: 1.0.0
pnpm-registry-mock: 2.0.0
pnpm-registry-mock: 2.1.0
read-pkg: 3.0.0
rimraf: 2.6.2
sepia: 2.0.2
@@ -3543,7 +3543,7 @@ packages:
dev: false
resolution:
integrity: sha1-dB2ZeXYv362T8+Rp3rSoFNNDAAg=
/pnpm-registry-mock/2.0.0:
/pnpm-registry-mock/2.1.0:
dependencies:
anonymous-npm-registry-client: 0.1.2
cpr: 3.0.1
@@ -3553,7 +3553,7 @@ packages:
engines:
node: '>=6'
resolution:
integrity: sha512-hb/ifS3t6RhgwkILvs7lkWK6ZtZuea0s0AG5RrVkZDS2sL3fF81+bHF50DcpdEGbJKJPloC0jUhIfFXdSZ8rUQ==
integrity: sha512-CdVJPZNJDQagEUZBOYdG/nikpvu2ftAPNui6OzOSl8GtyMerfeD++OIQRS/S5K1xGRYoPQvL5reHlBbrLKa3Yg==
/pnpm-shrinkwrap/6.4.0:
dependencies:
'@pnpm/resolver-base': 1.1.0
@@ -5007,7 +5007,7 @@ specifiers:
path-exists: ^3.0.0
path-name: ^1.0.0
pnpm-install-checks: ^1.1.0
pnpm-registry-mock: ^2.0.0
pnpm-registry-mock: ^2.1.0
pnpm-shrinkwrap: ^6.4.0
ramda: ^0.25.0
read-pkg: ^3.0.0

View File

@@ -137,7 +137,7 @@ function resolvePeersOfNode (
...parentParentPkgs,
...toPkgByName(R.keys(children).map((alias) => ({alias, nodeId: children[alias], node: ctx.pkgGraph[children[alias]]}))),
}
const unknownResolvedPeersOfChildren = resolvePeersOfChildren(children, parentPkgs, ctx, nodeId)
const unknownResolvedPeersOfChildren = resolvePeersOfChildren(children, parentPkgs, ctx)
const resolvedPeers = R.isEmpty(node.pkg.peerDependencies)
? {}
@@ -213,7 +213,6 @@ function resolvePeersOfChildren (
depGraph: DepGraphNodesByDepPath,
pkgGraph: PkgGraphNodeByNodeId,
},
exceptNodeId?: string,
): {[alias: string]: string} {
const allResolvedPeers: {[alias: string]: string} = {}
@@ -222,7 +221,7 @@ function resolvePeersOfChildren (
}
const unknownResolvedPeersOfChildren = R.keys(allResolvedPeers)
.filter((alias) => !children[alias] && allResolvedPeers[alias] !== exceptNodeId)
.filter((alias) => !children[alias])
.reduce((acc, peer) => {
acc[peer] = allResolvedPeers[peer]
return acc

View File

@@ -287,6 +287,16 @@ test('package that resolves its own peer dependency', async (t: tape.Test) => {
t.ok(shr.packages['/pkg-with-resolved-peer/1.0.0'].optionalDependencies['peer-b'])
})
test('package that has parent as peer dependency', async (t: tape.Test) => {
const project = prepare(t)
await installPkgs(['has-alpha', 'alpha'], await testDefaults())
const shr = await project.loadShrinkwrap()
t.ok(shr.packages['/has-alpha-as-peer/1.0.0/alpha@1.0.0'])
t.ok(shr.packages['/has-alpha-as-peer/1.0.0'])
})
test('own peer installed in root as well is linked to root', async (t: tape.Test) => {
const project = prepare(t)