Skip to content

Commit

Permalink
fix: version overrider should have bigger priority than read package …
Browse files Browse the repository at this point in the history
…hook (#5540)
  • Loading branch information
zkochan committed Oct 23, 2022
1 parent c0bd667 commit da22f0c
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 3 deletions.
6 changes: 6 additions & 0 deletions .changeset/smooth-onions-smell.md
@@ -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`.
6 changes: 3 additions & 3 deletions packages/hooks.read-package-hook/src/createReadPackageHook.ts
Expand Up @@ -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)))
}
Expand All @@ -45,6 +42,9 @@ export function createReadPackageHook (
} else if (readPackageHook) {
hooks.push(readPackageHook)
}
if (!isEmpty(overrides ?? {})) {
hooks.push(createVersionsOverrider(overrides!, lockfileDir))
}
if (
peerDependencyRules != null &&
(
Expand Down
27 changes: 27 additions & 0 deletions packages/hooks.read-package-hook/test/createReadPackageHook.ts
Expand Up @@ -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',
},
})
})

0 comments on commit da22f0c

Please sign in to comment.