Blame view

node_modules/cosmiconfig/dist/loadRc.js 3.08 KB
2a09d1a4   liuqimichale   添加宜春 天水 宣化
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
  //      
  'use strict';
  
  const yaml = require('js-yaml');
  const requireFromString = require('require-from-string');
  const readFile = require('./readFile');
  const parseJson = require('./parseJson');
  const funcRunner = require('./funcRunner');
  
  module.exports = function loadRc(
    filepath        ,
    options   
                     
                             
                             
     
  )                                                     {
    if (!options.sync) {
      return readFile(filepath)
        .then(parseExtensionlessRcFile)
        .then(checkExtensionlessRcResult);
    } else {
      return checkExtensionlessRcResult(
        parseExtensionlessRcFile(readFile.sync(filepath))
      );
    }
  
    function checkExtensionlessRcResult(result) {
      if (result) return result;
      if (options.rcExtensions) return loadRcWithExtensions();
      return null;
    }
  
    function parseExtensionlessRcFile(content         )                      {
      if (!content) return null;
      const pasedConfig = options.rcStrictJson
        ? parseJson(content, filepath)
        : yaml.safeLoad(content, { filename: filepath });
      return {
        config: pasedConfig,
        filepath,
      };
    }
  
    function loadRcWithExtensions() {
      let foundConfig = null;
      return funcRunner(readRcFile('json'), [
        (jsonContent         ) => {
          // Since this is the first try, config cannot have been found, so don't
          // check `if (foundConfig)`.
          if (jsonContent) {
            const successFilepath = `${filepath}.json`;
            foundConfig = {
              config: parseJson(jsonContent, successFilepath),
              filepath: successFilepath,
            };
          } else {
            return readRcFile('yaml');
          }
        },
        (yamlContent         ) => {
          if (foundConfig) {
            return;
          } else if (yamlContent) {
            const successFilepath = `${filepath}.yaml`;
            foundConfig = {
              config: yaml.safeLoad(yamlContent, { filename: successFilepath }),
              filepath: successFilepath,
            };
          } else {
            return readRcFile('yml');
          }
        },
        (ymlContent         ) => {
          if (foundConfig) {
            return;
          } else if (ymlContent) {
            const successFilepath = `${filepath}.yml`;
            foundConfig = {
              config: yaml.safeLoad(ymlContent, { filename: successFilepath }),
              filepath: successFilepath,
            };
          } else {
            return readRcFile('js');
          }
        },
        (jsContent         ) => {
          if (foundConfig) {
            return;
          } else if (jsContent) {
            const successFilepath = `${filepath}.js`;
            foundConfig = {
              config: requireFromString(jsContent, successFilepath),
              filepath: successFilepath,
            };
          } else {
            return;
          }
        },
        () => foundConfig,
      ]);
    }
  
    function readRcFile(extension        )                             {
      const filepathWithExtension = `${filepath}.${extension}`;
      return !options.sync
        ? readFile(filepathWithExtension)
        : readFile.sync(filepathWithExtension);
    }
  };