UNPKG

pnpm

Version:

Fast, disk space efficient package manager

63 lines 2.74 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const logger_1 = require("@pnpm/logger"); const chalk_1 = require("chalk"); const fs = require("fs"); exports.default = (pnpmFilePath, prefix) => { try { const pnpmfile = require(pnpmFilePath); logger_1.default.info({ message: `Using hooks from: ${pnpmFilePath}`, prefix, }); if (pnpmfile && pnpmfile.hooks && pnpmfile.hooks.readPackage && typeof pnpmfile.hooks.readPackage !== 'function') { throw new TypeError('hooks.readPackage should be a function'); } if (pnpmfile && pnpmfile.hooks && pnpmfile.hooks.readPackage) { const readPackage = pnpmfile.hooks.readPackage; pnpmfile.hooks.readPackage = function (pkg, ...args) { pkg.dependencies = pkg.dependencies || {}; pkg.devDependencies = pkg.devDependencies || {}; pkg.optionalDependencies = pkg.optionalDependencies || {}; pkg.peerDependencies = pkg.peerDependencies || {}; const newPkg = readPackage(pkg, ...args); if (!newPkg) { const err = new Error(`readPackage hook did not return a package manifest object. Hook imported via ${pnpmFilePath}`); // tslint:disable:no-string-literal err['code'] = 'ERR_PNPM_BAD_READ_PACKAGE_HOOK_RESULT'; err['pnpmfile'] = pnpmFilePath; // tslint:enable:no-string-literal throw err; } return newPkg; }; } pnpmfile.filename = pnpmFilePath; return pnpmfile; } catch (err) { if (err instanceof SyntaxError) { console.error(chalk_1.default.red('A syntax error in the pnpmfile.js\n')); console.error(err); process.exit(1); return; } if (err.code !== 'MODULE_NOT_FOUND' || pnpmFileExistsSync(pnpmFilePath)) { const errWrapper = new Error(`Error during pnpmfile execution. pnpmfile: "${pnpmFilePath}". Error: "${err.message}".`); // tslint:disable:no-string-literal errWrapper['code'] = 'ERR_PNPM_PNPMFILE_FAIL'; err['pnpmfile'] = pnpmFilePath; errWrapper['originalError'] = err; // tslint:enable:no-string-literal throw errWrapper; } return undefined; } }; function pnpmFileExistsSync(pnpmFilePath) { const pnpmFileRealName = pnpmFilePath.endsWith('.js') ? pnpmFilePath : `${pnpmFilePath}.js`; return fs.existsSync(pnpmFileRealName); } //# sourceMappingURL=requirePnpmfile.js.map