44 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| const path = require('path');
 | |
| const Conf = require('./lib/conf');
 | |
| const defaults = require('./lib/defaults');
 | |
| 
 | |
| // https://github.com/npm/npm/blob/latest/lib/config/core.js#L101-L200
 | |
| module.exports = opts => {
 | |
| 	const conf = new Conf(Object.assign({}, defaults.defaults));
 | |
| 
 | |
| 	conf.add(Object.assign({}, opts), 'cli');
 | |
| 	conf.addEnv();
 | |
| 	conf.loadPrefix();
 | |
| 
 | |
| 	const projectConf = path.resolve(conf.localPrefix, '.npmrc');
 | |
| 	const userConf = conf.get('userconfig');
 | |
| 
 | |
| 	if (!conf.get('global') && projectConf !== userConf) {
 | |
| 		conf.addFile(projectConf, 'project');
 | |
| 	} else {
 | |
| 		conf.add({}, 'project');
 | |
| 	}
 | |
| 
 | |
| 	conf.addFile(conf.get('userconfig'), 'user');
 | |
| 
 | |
| 	if (conf.get('prefix')) {
 | |
| 		const etc = path.resolve(conf.get('prefix'), 'etc');
 | |
| 		conf.root.globalconfig = path.resolve(etc, 'npmrc');
 | |
| 		conf.root.globalignorefile = path.resolve(etc, 'npmignore');
 | |
| 	}
 | |
| 
 | |
| 	conf.addFile(conf.get('globalconfig'), 'global');
 | |
| 	conf.loadUser();
 | |
| 
 | |
| 	const caFile = conf.get('cafile');
 | |
| 
 | |
| 	if (caFile) {
 | |
| 		conf.loadCAFile(caFile);
 | |
| 	}
 | |
| 
 | |
| 	return conf;
 | |
| };
 | |
| 
 | |
| module.exports.defaults = Object.assign({}, defaults.defaults);
 |