fix: version overrider should have bigger priority than read package hook (#5540)

This commit is contained in:
Zoltan Kochan
2022-10-23 16:45:41 +03:00
committed by GitHub
parent c0bd667f1b
commit da22f0c1f2
3 changed files with 36 additions and 3 deletions

View 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`.

View File

@@ -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 &&
(

View File

@@ -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',
},
})
})