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;
 | |
| };
 |