diff --git a/.changeset/eighty-spiders-grab.md b/.changeset/eighty-spiders-grab.md new file mode 100644 index 0000000000..d248e0d32e --- /dev/null +++ b/.changeset/eighty-spiders-grab.md @@ -0,0 +1,6 @@ +--- +"@pnpm/pnpmfile": patch +"supi": patch +--- + +The second argument to readPackage hook should always be the context object. diff --git a/packages/pnpm/test/hooks.ts b/packages/pnpm/test/hooks.ts index 6d1b5287eb..48bf477dac 100644 --- a/packages/pnpm/test/hooks.ts +++ b/packages/pnpm/test/hooks.ts @@ -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' } diff --git a/packages/pnpmfile/package.json b/packages/pnpmfile/package.json index 8092ef7e5a..2f54331919 100644 --- a/packages/pnpmfile/package.json +++ b/packages/pnpmfile/package.json @@ -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" diff --git a/packages/pnpmfile/src/requireHooks.ts b/packages/pnpmfile/src/requireHooks.ts index 9a19f738e8..825f088c55 100644 --- a/packages/pnpmfile/src/requireHooks.ts +++ b/packages/pnpmfile/src/requireHooks.ts @@ -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 diff --git a/packages/supi/src/install/index.ts b/packages/supi/src/install/index.ts index 748424eebe..4724dae90d 100644 --- a/packages/supi/src/install/index.ts +++ b/packages/supi/src/install/index.ts @@ -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 } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1056731229..e86433b73a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -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: