42 lines
		
	
	
		
			840 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			42 lines
		
	
	
		
			840 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | 'use strict'; | ||
|  | const {promisify} = require('util'); | ||
|  | const fs = require('fs'); | ||
|  | const path = require('path'); | ||
|  | const parseJson = require('parse-json'); | ||
|  | 
 | ||
|  | const readFileAsync = promisify(fs.readFile); | ||
|  | 
 | ||
|  | module.exports = async options => { | ||
|  | 	options = { | ||
|  | 		cwd: process.cwd(), | ||
|  | 		normalize: true, | ||
|  | 		...options | ||
|  | 	}; | ||
|  | 
 | ||
|  | 	const filePath = path.resolve(options.cwd, 'package.json'); | ||
|  | 	const json = parseJson(await readFileAsync(filePath, 'utf8')); | ||
|  | 
 | ||
|  | 	if (options.normalize) { | ||
|  | 		require('normalize-package-data')(json); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	return json; | ||
|  | }; | ||
|  | 
 | ||
|  | module.exports.sync = options => { | ||
|  | 	options = { | ||
|  | 		cwd: process.cwd(), | ||
|  | 		normalize: true, | ||
|  | 		...options | ||
|  | 	}; | ||
|  | 
 | ||
|  | 	const filePath = path.resolve(options.cwd, 'package.json'); | ||
|  | 	const json = parseJson(fs.readFileSync(filePath, 'utf8')); | ||
|  | 
 | ||
|  | 	if (options.normalize) { | ||
|  | 		require('normalize-package-data')(json); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	return json; | ||
|  | }; |