blob: ee735e1183dc3ef757b2fdabbdc7a01bbc133b8a [file] [log] [blame]
Leo Repp58b9f112021-11-22 11:57:47 +01001'use strict';
2const path = require('path');
3const Conf = require('./lib/conf');
4const defaults = require('./lib/defaults');
5
6// https://github.com/npm/npm/blob/latest/lib/config/core.js#L101-L200
7module.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
43module.exports.defaults = Object.assign({}, defaults.defaults);