fix: hoisted install with dependency that is a peer of itself (#8892)

close #8854
This commit is contained in:
Zoltan Kochan
2024-12-20 01:05:54 +01:00
committed by GitHub
parent 82de1bd1dd
commit 3bc9d5c50e
5 changed files with 46 additions and 24 deletions

View File

@@ -0,0 +1,6 @@
---
"@pnpm/resolve-dependencies": patch
"pnpm": patch
---
Installation with hoisted node_modules should not fail, when a dependency has itself in its own peer dependencies [#8854](https://github.com/pnpm/pnpm/issues/8854).

View File

@@ -315,3 +315,18 @@ test('peerDependencies should be installed when autoInstallPeers is set to true
expect(fs.existsSync('node_modules/react')).toBeTruthy()
})
// Covers https://github.com/pnpm/pnpm/issues/8854
test('installing with hoisted node-linker a package that is a peer dependency of itself', async () => {
const project = prepareEmpty()
await addDependenciesToPackage(
{},
['@pnpm.e2e/peer-of-itself@1.0.0'],
testDefaults({ nodeLinker: 'hoisted', save: true })
)
project.has('@pnpm.e2e/peer-of-itself')
const lockfile = project.readLockfile()
expect(lockfile.packages['@pnpm.e2e/peer-of-itself@1.0.0'].peerDependencies).toBeFalsy()
})

View File

@@ -1635,6 +1635,7 @@ function getResolvedPackage (
function peerDependenciesWithoutOwn (pkg: PackageManifest): PeerDependencies {
if ((pkg.peerDependencies == null) && (pkg.peerDependenciesMeta == null)) return {}
const ownDeps = new Set([
pkg.name,
...Object.keys(pkg.dependencies ?? {}),
...Object.keys(pkg.optionalDependencies ?? {}),
])

46
pnpm-lock.yaml generated
View File

@@ -55,8 +55,8 @@ catalogs:
specifier: 0.0.0
version: 0.0.0
'@pnpm/registry-mock':
specifier: 3.45.0
version: 3.45.0
specifier: 3.46.0
version: 3.46.0
'@pnpm/semver-diff':
specifier: ^1.1.0
version: 1.1.0
@@ -849,7 +849,7 @@ importers:
version: link:../../pkg-manager/modules-yaml
'@pnpm/registry-mock':
specifier: 'catalog:'
version: 3.45.0(encoding@0.1.13)(typanion@3.14.0)
version: 3.46.0(encoding@0.1.13)(typanion@3.14.0)
'@pnpm/types':
specifier: workspace:*
version: link:../../packages/types
@@ -883,7 +883,7 @@ importers:
dependencies:
'@pnpm/registry-mock':
specifier: 'catalog:'
version: 3.45.0(encoding@0.1.13)(typanion@3.14.0)
version: 3.46.0(encoding@0.1.13)(typanion@3.14.0)
'@pnpm/store.cafs':
specifier: workspace:*
version: link:../../store/cafs
@@ -958,7 +958,7 @@ importers:
dependencies:
'@pnpm/registry-mock':
specifier: 'catalog:'
version: 3.45.0(encoding@0.1.13)(typanion@3.14.0)
version: 3.46.0(encoding@0.1.13)(typanion@3.14.0)
'@pnpm/worker':
specifier: workspace:*
version: link:../../worker
@@ -1141,7 +1141,7 @@ importers:
version: link:../../__utils__/prepare
'@pnpm/registry-mock':
specifier: 'catalog:'
version: 3.45.0(encoding@0.1.13)(typanion@3.14.0)
version: 3.46.0(encoding@0.1.13)(typanion@3.14.0)
'@types/ramda':
specifier: 'catalog:'
version: 0.29.12
@@ -2335,7 +2335,7 @@ importers:
version: link:../../__utils__/prepare
'@pnpm/registry-mock':
specifier: 'catalog:'
version: 3.45.0(encoding@0.1.13)(typanion@3.14.0)
version: 3.46.0(encoding@0.1.13)(typanion@3.14.0)
'@pnpm/test-fixtures':
specifier: workspace:*
version: link:../../__utils__/test-fixtures
@@ -2480,7 +2480,7 @@ importers:
version: link:../../__utils__/prepare
'@pnpm/registry-mock':
specifier: 'catalog:'
version: 3.45.0(encoding@0.1.13)(typanion@3.14.0)
version: 3.46.0(encoding@0.1.13)(typanion@3.14.0)
'@pnpm/test-ipc-server':
specifier: workspace:*
version: link:../../__utils__/test-ipc-server
@@ -4135,7 +4135,7 @@ importers:
version: link:../../__utils__/prepare
'@pnpm/registry-mock':
specifier: 'catalog:'
version: 3.45.0(encoding@0.1.13)(typanion@3.14.0)
version: 3.46.0(encoding@0.1.13)(typanion@3.14.0)
'@pnpm/test-fixtures':
specifier: workspace:*
version: link:../../__utils__/test-fixtures
@@ -4422,7 +4422,7 @@ importers:
version: link:../../pkg-manifest/read-package-json
'@pnpm/registry-mock':
specifier: 'catalog:'
version: 3.45.0(encoding@0.1.13)(typanion@3.14.0)
version: 3.46.0(encoding@0.1.13)(typanion@3.14.0)
'@pnpm/store-path':
specifier: workspace:*
version: link:../../store/store-path
@@ -4698,7 +4698,7 @@ importers:
version: link:../read-projects-context
'@pnpm/registry-mock':
specifier: 'catalog:'
version: 3.45.0(encoding@0.1.13)(typanion@3.14.0)
version: 3.46.0(encoding@0.1.13)(typanion@3.14.0)
'@pnpm/store-path':
specifier: workspace:*
version: link:../../store/store-path
@@ -5058,7 +5058,7 @@ importers:
version: 'link:'
'@pnpm/registry-mock':
specifier: 'catalog:'
version: 3.45.0(encoding@0.1.13)(typanion@3.14.0)
version: 3.46.0(encoding@0.1.13)(typanion@3.14.0)
'@pnpm/test-fixtures':
specifier: workspace:*
version: link:../../__utils__/test-fixtures
@@ -5260,7 +5260,7 @@ importers:
version: link:../../__utils__/prepare
'@pnpm/registry-mock':
specifier: 'catalog:'
version: 3.45.0(encoding@0.1.13)(typanion@3.14.0)
version: 3.46.0(encoding@0.1.13)(typanion@3.14.0)
'@pnpm/test-fixtures':
specifier: workspace:*
version: link:../../__utils__/test-fixtures
@@ -5868,7 +5868,7 @@ importers:
version: link:../pkg-manifest/read-project-manifest
'@pnpm/registry-mock':
specifier: 'catalog:'
version: 3.45.0(encoding@0.1.13)(typanion@3.14.0)
version: 3.46.0(encoding@0.1.13)(typanion@3.14.0)
'@pnpm/run-npm':
specifier: workspace:*
version: link:../exec/run-npm
@@ -6162,7 +6162,7 @@ importers:
version: link:../../__utils__/prepare
'@pnpm/registry-mock':
specifier: 'catalog:'
version: 3.45.0(encoding@0.1.13)(typanion@3.14.0)
version: 3.46.0(encoding@0.1.13)(typanion@3.14.0)
'@pnpm/workspace.filter-packages-from-dir':
specifier: workspace:*
version: link:../../workspace/filter-packages-from-dir
@@ -6274,7 +6274,7 @@ importers:
version: link:../../__utils__/prepare
'@pnpm/registry-mock':
specifier: 'catalog:'
version: 3.45.0(encoding@0.1.13)(typanion@3.14.0)
version: 3.46.0(encoding@0.1.13)(typanion@3.14.0)
'@pnpm/test-ipc-server':
specifier: workspace:*
version: link:../../__utils__/test-ipc-server
@@ -6867,7 +6867,7 @@ importers:
version: link:../../pkg-manifest/read-package-json
'@pnpm/registry-mock':
specifier: 'catalog:'
version: 3.45.0(encoding@0.1.13)(typanion@3.14.0)
version: 3.46.0(encoding@0.1.13)(typanion@3.14.0)
'@pnpm/test-fixtures':
specifier: workspace:*
version: link:../../__utils__/test-fixtures
@@ -6934,7 +6934,7 @@ importers:
version: link:../../__utils__/prepare
'@pnpm/registry-mock':
specifier: 'catalog:'
version: 3.45.0(encoding@0.1.13)(typanion@3.14.0)
version: 3.46.0(encoding@0.1.13)(typanion@3.14.0)
'@pnpm/workspace.filter-packages-from-dir':
specifier: workspace:*
version: link:../../workspace/filter-packages-from-dir
@@ -7025,7 +7025,7 @@ importers:
version: link:../../__utils__/prepare
'@pnpm/registry-mock':
specifier: 'catalog:'
version: 3.45.0(encoding@0.1.13)(typanion@3.14.0)
version: 3.46.0(encoding@0.1.13)(typanion@3.14.0)
'@pnpm/test-fixtures':
specifier: workspace:*
version: link:../../__utils__/test-fixtures
@@ -7369,7 +7369,7 @@ importers:
version: link:../../__utils__/prepare
'@pnpm/registry-mock':
specifier: 'catalog:'
version: 3.45.0(encoding@0.1.13)(typanion@3.14.0)
version: 3.46.0(encoding@0.1.13)(typanion@3.14.0)
'@types/archy':
specifier: 'catalog:'
version: 0.0.33
@@ -9076,8 +9076,8 @@ packages:
resolution: {integrity: sha512-LFTWzfJbu6+l86bw/uUAsPU05n1oTqg6jzqyTXYDJPfVclqTfPnHiZoC1nvVvQlE7iVg3bhJ7SXg9IyzK7RWDQ==}
engines: {node: '>=18.12'}
'@pnpm/registry-mock@3.45.0':
resolution: {integrity: sha512-/OQyKgF25+rPtEsuj8DWkwc3aVdzmNLxeO54mm4x1U5bBVrSpEffzu1AwGmnXya9+Vp7V606NuXv2+1DqjupeA==}
'@pnpm/registry-mock@3.46.0':
resolution: {integrity: sha512-MS8idSUQu9Ag3f/s33dnEQp0zJ+z4aU01VznAIn8FT/6NBvOulVCV+CqGZbOohemNNPth7LfIS13l2fZD12rOA==}
engines: {node: '>=10.13'}
hasBin: true
@@ -16073,7 +16073,7 @@ snapshots:
sort-keys: 4.2.0
strip-bom: 4.0.0
'@pnpm/registry-mock@3.45.0(encoding@0.1.13)(typanion@3.14.0)':
'@pnpm/registry-mock@3.46.0(encoding@0.1.13)(typanion@3.14.0)':
dependencies:
anonymous-npm-registry-client: 0.2.0
execa: 5.1.1

View File

@@ -55,7 +55,7 @@ catalog:
"@pnpm/npm-package-arg": ^1.0.0
"@pnpm/os.env.path-extender": ^2.0.0
"@pnpm/patch-package": 0.0.0
"@pnpm/registry-mock": 3.45.0
"@pnpm/registry-mock": 3.46.0
"@pnpm/semver-diff": ^1.1.0
"@pnpm/tabtab": ^0.5.4
"@pnpm/util.lex-comparator": 3.0.0