12345678910111213141516171819202122232425262728293031323334 |
- // LICENSE : MIT
- "use strict";
- var assert = require("assert");
- var path = require("path");
- var packageName = require("../package.json").name;
- var packageNameReg = new RegExp('^' + packageName); // for support nodejs < 4.x, same as 'startsWith'
- function findPackageDir(paths) {
- if (!paths) {
- return null;
- }
- for (var i = 0; i < paths.length; ++i) {
- var dir = path.dirname(paths[i]);
- var dirName = dir.split(path.sep).pop();
- // ignore self and `.pnpm`. (support pnpm install)
- if (!packageNameReg.test(dirName) && dirName !== '.pnpm') {
- return dir;
- }
- }
- }
- /**
- * find package.json directory and return package json.
- * You should pass `module.paths` to `paths`.
- * @param {string[]} paths the paths for look-up
- * @returns {object}
- */
- function getPackageJSON(paths) {
- var dir = findPackageDir(paths);
- assert(dir, "package.json is not found");
- return require(path.resolve(dir, "package.json"));
- }
- module.exports = getPackageJSON;
|