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