fix: always pass the right args to readPackage hook (#3455)

close #3453
This commit is contained in:
Zoltan Kochan
2021-05-16 03:33:45 +03:00
committed by GitHub
parent 0560ca63fb
commit da0d4091d5
6 changed files with 18 additions and 16 deletions

View File

@@ -0,0 +1,6 @@
---
"@pnpm/pnpmfile": patch
"supi": patch
---
The second argument to readPackage hook should always be the context object.

View File

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

View File

@@ -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"

View File

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

View File

@@ -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
View File

@@ -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: