mirror of
https://github.com/pnpm/pnpm.git
synced 2026-04-05 07:46:10 -04:00
fix: always pass the right args to readPackage hook (#3455)
close #3453
This commit is contained in:
6
.changeset/eighty-spiders-grab.md
Normal file
6
.changeset/eighty-spiders-grab.md
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
"@pnpm/pnpmfile": patch
|
||||
"supi": patch
|
||||
---
|
||||
|
||||
The second argument to readPackage hook should always be the context object.
|
||||
@@ -10,8 +10,9 @@ test('readPackage hook in single project doesn\'t modify manifest', async () =>
|
||||
const project = prepare()
|
||||
const pnpmfile = `
|
||||
module.exports = { hooks: { readPackage } }
|
||||
function readPackage (pkg) {
|
||||
function readPackage (pkg, context) {
|
||||
if (pkg.name === 'project') {
|
||||
context.log('good')
|
||||
pkg.dependencies = pkg.dependencies || {}
|
||||
pkg.dependencies['dep-of-pkg-with-1-dep'] = '100.1.0'
|
||||
}
|
||||
|
||||
@@ -28,16 +28,14 @@
|
||||
},
|
||||
"homepage": "https://github.com/pnpm/pnpm/blob/master/packages/pnpmfile#readme",
|
||||
"devDependencies": {
|
||||
"@pnpm/logger": "^4.0.0",
|
||||
"@types/ramda": "0.27.39"
|
||||
"@pnpm/logger": "^4.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@pnpm/core-loggers": "workspace:6.0.1",
|
||||
"@pnpm/error": "workspace:2.0.0",
|
||||
"@pnpm/types": "workspace:7.1.0",
|
||||
"chalk": "^4.1.0",
|
||||
"path-absolute": "^1.0.1",
|
||||
"ramda": "^0.27.1"
|
||||
"path-absolute": "^1.0.1"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@pnpm/logger": "^4.0.0"
|
||||
|
||||
@@ -2,7 +2,6 @@ import path from 'path'
|
||||
import { hookLogger } from '@pnpm/core-loggers'
|
||||
import logger from '@pnpm/logger'
|
||||
import pathAbsolute from 'path-absolute'
|
||||
import * as R from 'ramda'
|
||||
import requirePnpmfile from './requirePnpmfile'
|
||||
|
||||
export default function requireHooks (
|
||||
@@ -41,9 +40,13 @@ export default function requireHooks (
|
||||
)
|
||||
}
|
||||
} else if (globalHooks[hookName]) {
|
||||
cookedHooks[hookName] = R.partialRight(globalHooks[hookName], [createReadPackageHookContext(globalPnpmfile.filename, prefix, hookName)])
|
||||
const globalHook = globalHooks[hookName]
|
||||
const context = createReadPackageHookContext(globalPnpmfile.filename, prefix, hookName)
|
||||
cookedHooks[hookName] = (pkg: object) => globalHook(pkg, context)
|
||||
} else if (hooks[hookName]) {
|
||||
cookedHooks[hookName] = R.partialRight(hooks[hookName], [createReadPackageHookContext(pnpmFile.filename, prefix, hookName)])
|
||||
const hook = hooks[hookName]
|
||||
const context = createReadPackageHookContext(pnpmFile.filename, prefix, hookName)
|
||||
cookedHooks[hookName] = (pkg: object) => hook(pkg, context)
|
||||
}
|
||||
}
|
||||
return cookedHooks
|
||||
|
||||
@@ -155,10 +155,8 @@ export async function mutateModules (
|
||||
if (!R.isEmpty(overrides ?? {})) {
|
||||
const versionsOverrider = createVersionsOverrider(overrides!, opts.lockfileDir)
|
||||
if (opts.hooks.readPackage != null) {
|
||||
opts.hooks.readPackage = R.pipe(
|
||||
opts.hooks.readPackage,
|
||||
versionsOverrider
|
||||
) as ReadPackageHook
|
||||
const readPackage = opts.hooks.readPackage
|
||||
opts.hooks.readPackage = ((manifest: ProjectManifest, dir?: string) => versionsOverrider(readPackage(manifest, dir), dir)) as ReadPackageHook
|
||||
} else {
|
||||
opts.hooks.readPackage = versionsOverrider
|
||||
}
|
||||
|
||||
4
pnpm-lock.yaml
generated
4
pnpm-lock.yaml
generated
@@ -2511,21 +2511,17 @@ importers:
|
||||
'@pnpm/logger': ^4.0.0
|
||||
'@pnpm/pnpmfile': 'link:'
|
||||
'@pnpm/types': workspace:7.1.0
|
||||
'@types/ramda': 0.27.39
|
||||
chalk: ^4.1.0
|
||||
path-absolute: ^1.0.1
|
||||
ramda: ^0.27.1
|
||||
dependencies:
|
||||
'@pnpm/core-loggers': link:../core-loggers
|
||||
'@pnpm/error': link:../error
|
||||
'@pnpm/types': link:../types
|
||||
chalk: 4.1.1
|
||||
path-absolute: 1.0.1
|
||||
ramda: 0.27.1
|
||||
devDependencies:
|
||||
'@pnpm/logger': 4.0.0
|
||||
'@pnpm/pnpmfile': 'link:'
|
||||
'@types/ramda': 0.27.39
|
||||
|
||||
packages/prepare-package:
|
||||
specifiers:
|
||||
|
||||
Reference in New Issue
Block a user