1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
| //
| 'use strict';
|
| const os = require('os');
| const createExplorer = require('./createExplorer');
| const loaders = require('./loaders');
|
| module.exports = cosmiconfig;
|
| function cosmiconfig(
| moduleName ,
| options
|
|
|
|
|
|
|
|
| ) {
| options = options || {};
| const defaults = {
| packageProp: moduleName,
| searchPlaces: [
| 'package.json',
| `.${moduleName}rc`,
| `.${moduleName}rc.json`,
| `.${moduleName}rc.yaml`,
| `.${moduleName}rc.yml`,
| `.${moduleName}rc.js`,
| `${moduleName}.config.js`,
| ],
| ignoreEmptySearchPlaces: true,
| stopDir: os.homedir(),
| cache: true,
| transform: identity,
| };
| const normalizedOptions = Object.assign(
| {},
| defaults,
| options,
| {
| loaders: normalizeLoaders(options.loaders),
| }
| );
|
| return createExplorer(normalizedOptions);
| }
|
| cosmiconfig.loadJs = loaders.loadJs;
| cosmiconfig.loadJson = loaders.loadJson;
| cosmiconfig.loadYaml = loaders.loadYaml;
|
| function normalizeLoaders(rawLoaders ) {
| const defaults = {
| '.js': { sync: loaders.loadJs, async: loaders.loadJs },
| '.json': { sync: loaders.loadJson, async: loaders.loadJson },
| '.yaml': { sync: loaders.loadYaml, async: loaders.loadYaml },
| '.yml': { sync: loaders.loadYaml, async: loaders.loadYaml },
| noExt: { sync: loaders.loadYaml, async: loaders.loadYaml },
| };
|
| if (!rawLoaders) {
| return defaults;
| }
|
| return Object.keys(rawLoaders).reduce((result, ext) => {
| const entry = rawLoaders && rawLoaders[ext];
| if (typeof entry === 'function') {
| result[ext] = { sync: entry, async: entry };
| } else {
| result[ext] = entry;
| }
| return result;
| }, defaults);
| }
|
| function identity(x) {
| return x;
| }
|
|