mirror of
https://github.com/pnpm/pnpm.git
synced 2026-03-24 18:11:39 -04:00
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:
committed by
Zoltan Kochan
parent
a1ae9016c4
commit
b7442285e7
@@ -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",
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user