| 'use strict'; | |
| var path = require('path'); | |
| var loadJsonFile = require('load-json-file'); | |
| var normalizePackageData = require('normalize-package-data'); | |
| var pathType = require('path-type'); | |
| module.exports = function (fp, opts) { | |
| if (typeof fp !== 'string') { | |
| opts = fp; | |
| fp = '.'; | |
| } | |
| opts = opts || {}; | |
| return pathType.dir(fp) | |
| .then(function (isDir) { | |
| if (isDir) { | |
| fp = path.join(fp, 'package.json'); | |
| } | |
| return loadJsonFile(fp); | |
| }) | |
| .then(function (x) { | |
| if (opts.normalize !== false) { | |
| normalizePackageData(x); | |
| } | |
| return x; | |
| }); | |
| }; | |
| module.exports.sync = function (fp, opts) { | |
| if (typeof fp !== 'string') { | |
| opts = fp; | |
| fp = '.'; | |
| } | |
| opts = opts || {}; | |
| fp = pathType.dirSync(fp) ? path.join(fp, 'package.json') : fp; | |
| var x = loadJsonFile.sync(fp); | |
| if (opts.normalize !== false) { | |
| normalizePackageData(x); | |
| } | |
| return x; | |
| }; |