| Leo Repp | 58b9f11 | 2021-11-22 11:57:47 +0100 | [diff] [blame^] | 1 | 'use strict'; |
| 2 | const path = require('path'); |
| 3 | const Conf = require('./lib/conf'); |
| 4 | const defaults = require('./lib/defaults'); |
| 5 | |
| 6 | // https://github.com/npm/npm/blob/latest/lib/config/core.js#L101-L200 |
| 7 | module.exports = opts => { |
| 8 | const conf = new Conf(Object.assign({}, defaults.defaults)); |
| 9 | |
| 10 | conf.add(Object.assign({}, opts), 'cli'); |
| 11 | conf.addEnv(); |
| 12 | conf.loadPrefix(); |
| 13 | |
| 14 | const projectConf = path.resolve(conf.localPrefix, '.npmrc'); |
| 15 | const userConf = conf.get('userconfig'); |
| 16 | |
| 17 | if (!conf.get('global') && projectConf !== userConf) { |
| 18 | conf.addFile(projectConf, 'project'); |
| 19 | } else { |
| 20 | conf.add({}, 'project'); |
| 21 | } |
| 22 | |
| 23 | conf.addFile(conf.get('userconfig'), 'user'); |
| 24 | |
| 25 | if (conf.get('prefix')) { |
| 26 | const etc = path.resolve(conf.get('prefix'), 'etc'); |
| 27 | conf.root.globalconfig = path.resolve(etc, 'npmrc'); |
| 28 | conf.root.globalignorefile = path.resolve(etc, 'npmignore'); |
| 29 | } |
| 30 | |
| 31 | conf.addFile(conf.get('globalconfig'), 'global'); |
| 32 | conf.loadUser(); |
| 33 | |
| 34 | const caFile = conf.get('cafile'); |
| 35 | |
| 36 | if (caFile) { |
| 37 | conf.loadCAFile(caFile); |
| 38 | } |
| 39 | |
| 40 | return conf; |
| 41 | }; |
| 42 | |
| 43 | module.exports.defaults = Object.assign({}, defaults.defaults); |