You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
872 B
JavaScript
49 lines
872 B
JavaScript
'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;
|
|
};
|