mirror of
https://github.com/pnpm/pnpm.git
synced 2026-04-27 18:46:18 -04:00
fix: version overrider should have bigger priority than read package hook (#5540)
This commit is contained in:
6
.changeset/smooth-onions-smell.md
Normal file
6
.changeset/smooth-onions-smell.md
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
"@pnpm/hooks.read-package-hook": patch
|
||||
"pnpm": patch
|
||||
---
|
||||
|
||||
Version overrider should have higher priority then custom read package hook from `.pnpmfile.cjs`.
|
||||
@@ -31,9 +31,6 @@ export function createReadPackageHook (
|
||||
}
|
||||
): ReadPackageHook | undefined {
|
||||
const hooks: ReadPackageHook[] = []
|
||||
if (!isEmpty(overrides ?? {})) {
|
||||
hooks.push(createVersionsOverrider(overrides!, lockfileDir))
|
||||
}
|
||||
if (!ignoreCompatibilityDb) {
|
||||
hooks.push(createPackageExtender(fromPairs(compatPackageExtensions)))
|
||||
}
|
||||
@@ -45,6 +42,9 @@ export function createReadPackageHook (
|
||||
} else if (readPackageHook) {
|
||||
hooks.push(readPackageHook)
|
||||
}
|
||||
if (!isEmpty(overrides ?? {})) {
|
||||
hooks.push(createVersionsOverrider(overrides!, lockfileDir))
|
||||
}
|
||||
if (
|
||||
peerDependencyRules != null &&
|
||||
(
|
||||
|
||||
@@ -45,3 +45,30 @@ test('createReadPackageHook() runs the custom hook before the peer rules hook',
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
test('createReadPackageHook() runs the custom hook before the version overrider', async () => {
|
||||
const hook = jest.fn((manifest) => ({
|
||||
...manifest,
|
||||
dependencies: {
|
||||
...manifest.dependencies,
|
||||
react: '18',
|
||||
},
|
||||
}))
|
||||
const readPackageHook = createReadPackageHook({
|
||||
ignoreCompatibilityDb: true,
|
||||
lockfileDir: '/foo',
|
||||
readPackageHook: [hook],
|
||||
overrides: {
|
||||
react: '16',
|
||||
},
|
||||
})
|
||||
const manifest = {}
|
||||
const dir = '/bar'
|
||||
const updatedManifest = await readPackageHook!(manifest, dir)
|
||||
expect(hook).toBeCalledWith(manifest, dir)
|
||||
expect(updatedManifest).toStrictEqual({
|
||||
dependencies: {
|
||||
react: '16',
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user