mirror of
https://github.com/pnpm/pnpm.git
synced 2026-04-28 02:53:15 -04:00
fix: resolving peer deps from deps of root project (#3559)
This commit is contained in:
5
.changeset/late-ducks-relate.md
Normal file
5
.changeset/late-ducks-relate.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"@pnpm/resolve-dependencies": patch
|
||||
---
|
||||
|
||||
Dependencies from the root workspace package should be used to resolve peer dependencies of any projects in the workspace.
|
||||
@@ -116,7 +116,7 @@ export default async function<T> (
|
||||
// This may be optimized.
|
||||
// We only need to proceed resolving every dependency
|
||||
// if the newly added dependency has peer dependencies.
|
||||
const proceed = importer.hasRemovedDependencies === true || importer.wantedDependencies.some((wantedDep) => wantedDep['isNew'])
|
||||
const proceed = importer.id === '.' || importer.hasRemovedDependencies === true || importer.wantedDependencies.some((wantedDep) => wantedDep['isNew'])
|
||||
const resolveOpts = {
|
||||
currentDepth: 0,
|
||||
parentPkg: {
|
||||
|
||||
@@ -207,7 +207,7 @@ test('peer dependency is resolved from the dependencies of the workspace root pr
|
||||
{
|
||||
buildIndex: 0,
|
||||
manifest: {
|
||||
name: 'root',
|
||||
name: 'pkg',
|
||||
version: '1.0.0',
|
||||
|
||||
dependencies: {
|
||||
@@ -223,8 +223,45 @@ test('peer dependency is resolved from the dependencies of the workspace root pr
|
||||
message: 'ajv-keywords@1.5.0 requires a peer of ajv@>=4.10.0 but none was installed.',
|
||||
})
|
||||
|
||||
const lockfile = await projects.root.readLockfile()
|
||||
expect(lockfile.importers.pkg?.dependencies?.['ajv-keywords']).toBe('1.5.0_ajv@4.10.0')
|
||||
{
|
||||
const lockfile = await projects.root.readLockfile()
|
||||
expect(lockfile.importers.pkg?.dependencies?.['ajv-keywords']).toBe('1.5.0_ajv@4.10.0')
|
||||
}
|
||||
|
||||
await mutateModules([
|
||||
{
|
||||
buildIndex: 0,
|
||||
manifest: {
|
||||
name: 'root',
|
||||
version: '1.0.0',
|
||||
|
||||
dependencies: {
|
||||
ajv: '4.10.0',
|
||||
},
|
||||
},
|
||||
mutation: 'install',
|
||||
rootDir: process.cwd(),
|
||||
},
|
||||
{
|
||||
buildIndex: 0,
|
||||
manifest: {
|
||||
name: 'pkg',
|
||||
version: '1.0.0',
|
||||
|
||||
dependencies: {
|
||||
'ajv-keywords': '1.5.0',
|
||||
'is-positive': '1.0.0',
|
||||
},
|
||||
},
|
||||
mutation: 'install',
|
||||
rootDir: path.resolve('pkg'),
|
||||
},
|
||||
], await testDefaults({ reporter }))
|
||||
|
||||
{
|
||||
const lockfile = await projects.root.readLockfile()
|
||||
expect(lockfile.importers.pkg?.dependencies?.['ajv-keywords']).toBe('1.5.0_ajv@4.10.0')
|
||||
}
|
||||
})
|
||||
|
||||
test('warning is reported when cannot resolve peer dependency for non-top-level dependency', async () => {
|
||||
|
||||
Reference in New Issue
Block a user