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