rc-config-loader 2.0.3 → 2.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/rc-config-loader.js +150 -120
- package/lib/rc-config-loader.js.map +1 -1
- package/package.json +22 -17
package/lib/rc-config-loader.js
CHANGED
|
@@ -3,60 +3,66 @@
|
|
|
3
3
|
// Original https://github.com/zkochan/rcfile
|
|
4
4
|
"use strict";
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
7
7
|
|
|
8
8
|
var path = require("path");
|
|
9
|
+
|
|
9
10
|
var debug = require("debug")("rc-config-loader");
|
|
11
|
+
|
|
10
12
|
var requireFromString = require("require-from-string");
|
|
13
|
+
|
|
11
14
|
var JSON5 = require("json5");
|
|
15
|
+
|
|
12
16
|
var fs = require("fs");
|
|
17
|
+
|
|
13
18
|
var pathExists = require("path-exists");
|
|
19
|
+
|
|
14
20
|
var objectAssign = require("object-assign");
|
|
21
|
+
|
|
15
22
|
var keys = require("object-keys");
|
|
16
23
|
|
|
17
24
|
var defaultLoaderByExt = {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
25
|
+
".js": loadJSConfigFile,
|
|
26
|
+
".json": loadJSONConfigFile,
|
|
27
|
+
".yaml": loadYAMLConfigFile,
|
|
28
|
+
".yml": loadYAMLConfigFile
|
|
22
29
|
};
|
|
23
|
-
|
|
24
30
|
var defaultOptions = {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
31
|
+
// does look for `package.json`
|
|
32
|
+
packageJSON: false,
|
|
33
|
+
// treat default(no ext file) as some extension
|
|
34
|
+
defaultExtension: [".json", ".yaml", ".yml", ".js"],
|
|
35
|
+
cwd: process.cwd()
|
|
30
36
|
};
|
|
31
|
-
|
|
32
37
|
/**
|
|
33
38
|
* @param {string} pkgName
|
|
34
39
|
* @param {rcConfigLoaderOption} [opts]
|
|
35
40
|
* @returns {{ config: Object, filePath:string } | undefined}
|
|
36
41
|
*/
|
|
37
|
-
module.exports = function rcConfigLoader(pkgName) {
|
|
38
|
-
var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
39
42
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
43
|
+
module.exports = function rcConfigLoader(pkgName) {
|
|
44
|
+
var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
45
|
+
// path/to/config or basename of config file.
|
|
46
|
+
var configFileName = opts.configFileName || ".".concat(pkgName, "rc");
|
|
47
|
+
var defaultExtension = opts.defaultExtension || defaultOptions.defaultExtension;
|
|
48
|
+
var cwd = opts.cwd || defaultOptions.cwd;
|
|
49
|
+
var packageJSON = opts.packageJSON || defaultOptions.packageJSON;
|
|
50
|
+
var packageJSONFieldName = _typeof(packageJSON) === "object" ? packageJSON.fieldName : pkgName;
|
|
51
|
+
var parts = splitPath(cwd);
|
|
52
|
+
var loaders = Array.isArray(defaultExtension) ? defaultExtension.map(function (extension) {
|
|
53
|
+
return defaultLoaderByExt[extension];
|
|
54
|
+
}) : defaultLoaderByExt[defaultExtension];
|
|
55
|
+
var loaderByExt = objectAssign({}, defaultLoaderByExt, {
|
|
56
|
+
"": loaders
|
|
57
|
+
});
|
|
58
|
+
return findConfig({
|
|
59
|
+
parts: parts,
|
|
60
|
+
loaderByExt: loaderByExt,
|
|
61
|
+
configFileName: configFileName,
|
|
62
|
+
packageJSON: packageJSON,
|
|
63
|
+
packageJSONFieldName: packageJSONFieldName
|
|
64
|
+
});
|
|
58
65
|
};
|
|
59
|
-
|
|
60
66
|
/**
|
|
61
67
|
*
|
|
62
68
|
* @param {string[]} parts
|
|
@@ -69,118 +75,142 @@ module.exports = function rcConfigLoader(pkgName) {
|
|
|
69
75
|
* filePath: string
|
|
70
76
|
* }|undefined}
|
|
71
77
|
*/
|
|
78
|
+
|
|
79
|
+
|
|
72
80
|
function findConfig(_ref) {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
var loaders = loaderByExt[ext];
|
|
87
|
-
if (!Array.isArray(loaders)) {
|
|
88
|
-
var loader = loaders;
|
|
89
|
-
var result = loader(configLocation);
|
|
90
|
-
if (!result) {
|
|
91
|
-
continue;
|
|
92
|
-
}
|
|
93
|
-
return {
|
|
94
|
-
config: result,
|
|
95
|
-
filePath: configLocation
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
for (var i = 0; i < loaders.length; i++) {
|
|
99
|
-
var _loader = loaders[i];
|
|
100
|
-
var _result = _loader(configLocation, true);
|
|
101
|
-
if (!_result) {
|
|
102
|
-
continue;
|
|
103
|
-
}
|
|
104
|
-
return {
|
|
105
|
-
config: _result,
|
|
106
|
-
filePath: configLocation
|
|
107
|
-
};
|
|
108
|
-
}
|
|
81
|
+
var parts = _ref.parts,
|
|
82
|
+
loaderByExt = _ref.loaderByExt,
|
|
83
|
+
configFileName = _ref.configFileName,
|
|
84
|
+
packageJSON = _ref.packageJSON,
|
|
85
|
+
packageJSONFieldName = _ref.packageJSONFieldName;
|
|
86
|
+
var exts = keys(loaderByExt);
|
|
87
|
+
|
|
88
|
+
while (exts.length) {
|
|
89
|
+
var ext = exts.shift();
|
|
90
|
+
var configLocation = join(parts, configFileName + ext);
|
|
91
|
+
|
|
92
|
+
if (!pathExists.sync(configLocation)) {
|
|
93
|
+
continue;
|
|
109
94
|
}
|
|
110
95
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
96
|
+
var loaders = loaderByExt[ext];
|
|
97
|
+
|
|
98
|
+
if (!Array.isArray(loaders)) {
|
|
99
|
+
var loader = loaders;
|
|
100
|
+
var result = loader(configLocation);
|
|
101
|
+
|
|
102
|
+
if (!result) {
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
return {
|
|
107
|
+
config: result,
|
|
108
|
+
filePath: configLocation
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
for (var i = 0; i < loaders.length; i++) {
|
|
113
|
+
var _loader = loaders[i];
|
|
114
|
+
|
|
115
|
+
var _result = _loader(configLocation, true);
|
|
116
|
+
|
|
117
|
+
if (!_result) {
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
return {
|
|
122
|
+
config: _result,
|
|
123
|
+
filePath: configLocation
|
|
124
|
+
};
|
|
122
125
|
}
|
|
123
|
-
|
|
124
|
-
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
if (packageJSON) {
|
|
129
|
+
var pkgJSONLoc = join(parts, "package.json");
|
|
130
|
+
|
|
131
|
+
if (pathExists.sync(pkgJSONLoc)) {
|
|
132
|
+
var pkgJSON = require(pkgJSONLoc);
|
|
133
|
+
|
|
134
|
+
if (pkgJSON[packageJSONFieldName]) {
|
|
135
|
+
return {
|
|
136
|
+
config: pkgJSON[packageJSONFieldName],
|
|
137
|
+
filePath: pkgJSONLoc
|
|
138
|
+
};
|
|
139
|
+
}
|
|
125
140
|
}
|
|
126
|
-
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
if (parts.pop()) {
|
|
144
|
+
return findConfig({
|
|
145
|
+
parts: parts,
|
|
146
|
+
loaderByExt: loaderByExt,
|
|
147
|
+
configFileName: configFileName,
|
|
148
|
+
packageJSON: packageJSON,
|
|
149
|
+
packageJSONFieldName: packageJSONFieldName
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
return undefined;
|
|
127
154
|
}
|
|
128
155
|
|
|
129
156
|
function splitPath(x) {
|
|
130
|
-
|
|
157
|
+
return path.resolve(x || "").split(path.sep);
|
|
131
158
|
}
|
|
132
159
|
|
|
133
160
|
function join(parts, filename) {
|
|
134
|
-
|
|
161
|
+
return path.resolve(parts.join(path.sep) + path.sep, filename);
|
|
135
162
|
}
|
|
136
163
|
|
|
137
164
|
function loadJSConfigFile(filePath, suppress) {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
165
|
+
debug("Loading JavaScript config file: ".concat(filePath));
|
|
166
|
+
|
|
167
|
+
try {
|
|
168
|
+
var content = fs.readFileSync(filePath, "utf-8");
|
|
169
|
+
return requireFromString(content, filePath);
|
|
170
|
+
} catch (e) {
|
|
171
|
+
debug("Error reading JavaScript file: ".concat(filePath));
|
|
172
|
+
|
|
173
|
+
if (!suppress) {
|
|
174
|
+
e.message = "Cannot read config file: ".concat(filePath, "\nError: ").concat(e.message);
|
|
175
|
+
throw e;
|
|
148
176
|
}
|
|
177
|
+
}
|
|
149
178
|
}
|
|
150
179
|
|
|
151
180
|
function loadJSONConfigFile(filePath, suppress) {
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
181
|
+
debug("Loading JSON config file: ".concat(filePath));
|
|
182
|
+
|
|
183
|
+
try {
|
|
184
|
+
return JSON5.parse(readFile(filePath));
|
|
185
|
+
} catch (e) {
|
|
186
|
+
debug("Error reading JSON file: ".concat(filePath));
|
|
187
|
+
|
|
188
|
+
if (!suppress) {
|
|
189
|
+
e.message = "Cannot read config file: ".concat(filePath, "\nError: ").concat(e.message);
|
|
190
|
+
throw e;
|
|
162
191
|
}
|
|
192
|
+
}
|
|
163
193
|
}
|
|
164
194
|
|
|
165
195
|
function readFile(filePath) {
|
|
166
|
-
|
|
196
|
+
return fs.readFileSync(filePath, "utf8");
|
|
167
197
|
}
|
|
168
198
|
|
|
169
199
|
function loadYAMLConfigFile(filePath, suppress) {
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
}
|
|
200
|
+
debug("Loading YAML config file: ".concat(filePath)); // lazy load YAML to improve performance when not used
|
|
201
|
+
|
|
202
|
+
var yaml = require("js-yaml");
|
|
203
|
+
|
|
204
|
+
try {
|
|
205
|
+
// empty YAML file can be null, so always use
|
|
206
|
+
return yaml.safeLoad(readFile(filePath)) || {};
|
|
207
|
+
} catch (e) {
|
|
208
|
+
debug("Error reading YAML file: ".concat(filePath));
|
|
209
|
+
|
|
210
|
+
if (!suppress) {
|
|
211
|
+
e.message = "Cannot read config file: ".concat(filePath, "\nError: ").concat(e.message);
|
|
212
|
+
throw e;
|
|
184
213
|
}
|
|
214
|
+
}
|
|
185
215
|
}
|
|
186
216
|
//# sourceMappingURL=rc-config-loader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/rc-config-loader.js"],"names":["path","require","debug","requireFromString","JSON5","fs","pathExists","objectAssign","keys","defaultLoaderByExt","loadJSConfigFile","loadJSONConfigFile","loadYAMLConfigFile","defaultOptions","packageJSON","defaultExtension","cwd","process","module","exports","rcConfigLoader","pkgName","opts","configFileName","packageJSONFieldName","fieldName","parts","splitPath","loaders","Array","isArray","map","extension","loaderByExt","findConfig","exts","length","ext","shift","configLocation","join","sync","loader","result","config","filePath","i","pkgJSONLoc","pkgJSON","pop","undefined","x","resolve","split","sep","filename","suppress","content","readFileSync","e","message","parse","readFile","yaml","safeLoad"],"mappings":"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","file":"rc-config-loader.js","sourcesContent":["// MIT © 2017 azu\n// MIT © Zoltan Kochan\n// Original https://github.com/zkochan/rcfile\n\"use strict\";\nconst path = require(\"path\");\nconst debug = require(\"debug\")(\"rc-config-loader\");\nconst requireFromString = require(\"require-from-string\");\nconst JSON5 = require(\"json5\");\nconst fs = require(\"fs\");\nconst pathExists = require(\"path-exists\");\nconst objectAssign = require(\"object-assign\");\nconst keys = require(\"object-keys\");\n\nconst defaultLoaderByExt = {\n \".js\": loadJSConfigFile,\n \".json\": loadJSONConfigFile,\n \".yaml\": loadYAMLConfigFile,\n \".yml\": loadYAMLConfigFile\n};\n\nconst defaultOptions = {\n // does look for `package.json`\n packageJSON: false,\n // treat default(no ext file) as some extension\n defaultExtension: [\".json\", \".yaml\", \".yml\", \".js\"],\n cwd: process.cwd()\n};\n\n/**\n * @param {string} pkgName\n * @param {rcConfigLoaderOption} [opts]\n * @returns {{ config: Object, filePath:string } | undefined}\n */\nmodule.exports = function rcConfigLoader(pkgName, opts = {}) {\n // path/to/config or basename of config file.\n const configFileName = opts.configFileName || `.${pkgName}rc`;\n const defaultExtension = opts.defaultExtension || defaultOptions.defaultExtension;\n const cwd = opts.cwd || defaultOptions.cwd;\n const packageJSON = opts.packageJSON || defaultOptions.packageJSON;\n const packageJSONFieldName = typeof packageJSON === \"object\" ? packageJSON.fieldName : pkgName;\n\n const parts = splitPath(cwd);\n\n const loaders = Array.isArray(defaultExtension)\n ? defaultExtension.map(extension => defaultLoaderByExt[extension])\n : defaultLoaderByExt[defaultExtension];\n\n const loaderByExt = objectAssign({}, defaultLoaderByExt, {\n \"\": loaders\n });\n\n return findConfig({ parts, loaderByExt, configFileName, packageJSON, packageJSONFieldName });\n};\n\n/**\n *\n * @param {string[]} parts\n * @param {Object} loaderByExt\n * @param {string} configFileName\n * @param {boolean|Object} packageJSON\n * @param {string} packageJSONFieldName\n * @returns {{\n * config: string,\n * filePath: string\n * }|undefined}\n */\nfunction findConfig({ parts, loaderByExt, configFileName, packageJSON, packageJSONFieldName }) {\n const exts = keys(loaderByExt);\n while (exts.length) {\n const ext = exts.shift();\n const configLocation = join(parts, configFileName + ext);\n if (!pathExists.sync(configLocation)) {\n continue;\n }\n const loaders = loaderByExt[ext];\n if (!Array.isArray(loaders)) {\n const loader = loaders;\n const result = loader(configLocation);\n if (!result) {\n continue;\n }\n return {\n config: result,\n filePath: configLocation\n };\n }\n for (let i = 0; i < loaders.length; i++) {\n const loader = loaders[i];\n const result = loader(configLocation, true);\n if (!result) {\n continue;\n }\n return {\n config: result,\n filePath: configLocation\n };\n }\n }\n\n if (packageJSON) {\n const pkgJSONLoc = join(parts, \"package.json\");\n if (pathExists.sync(pkgJSONLoc)) {\n const pkgJSON = require(pkgJSONLoc);\n if (pkgJSON[packageJSONFieldName]) {\n return {\n config: pkgJSON[packageJSONFieldName],\n filePath: pkgJSONLoc\n };\n }\n }\n }\n if (parts.pop()) {\n return findConfig({ parts, loaderByExt, configFileName, packageJSON, packageJSONFieldName });\n }\n return undefined;\n}\n\nfunction splitPath(x) {\n return path.resolve(x || \"\").split(path.sep);\n}\n\nfunction join(parts, filename) {\n return path.resolve(parts.join(path.sep) + path.sep, filename);\n}\n\nfunction loadJSConfigFile(filePath, suppress) {\n debug(`Loading JavaScript config file: ${filePath}`);\n try {\n const content = fs.readFileSync(filePath, \"utf-8\");\n return requireFromString(content, filePath);\n } catch (e) {\n debug(`Error reading JavaScript file: ${filePath}`);\n if (!suppress) {\n e.message = `Cannot read config file: ${filePath}\\nError: ${e.message}`;\n throw e;\n }\n }\n}\n\nfunction loadJSONConfigFile(filePath, suppress) {\n debug(`Loading JSON config file: ${filePath}`);\n\n try {\n return JSON5.parse(readFile(filePath));\n } catch (e) {\n debug(`Error reading JSON file: ${filePath}`);\n if (!suppress) {\n e.message = `Cannot read config file: ${filePath}\\nError: ${e.message}`;\n throw e;\n }\n }\n}\n\nfunction readFile(filePath) {\n return fs.readFileSync(filePath, \"utf8\");\n}\n\nfunction loadYAMLConfigFile(filePath, suppress) {\n debug(`Loading YAML config file: ${filePath}`);\n\n // lazy load YAML to improve performance when not used\n const yaml = require(\"js-yaml\");\n\n try {\n // empty YAML file can be null, so always use\n return yaml.safeLoad(readFile(filePath)) || {};\n } catch (e) {\n debug(`Error reading YAML file: ${filePath}`);\n if (!suppress) {\n e.message = `Cannot read config file: ${filePath}\\nError: ${e.message}`;\n throw e;\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/rc-config-loader.js"],"names":["path","require","debug","requireFromString","JSON5","fs","pathExists","objectAssign","keys","defaultLoaderByExt","loadJSConfigFile","loadJSONConfigFile","loadYAMLConfigFile","defaultOptions","packageJSON","defaultExtension","cwd","process","module","exports","rcConfigLoader","pkgName","opts","configFileName","packageJSONFieldName","fieldName","parts","splitPath","loaders","Array","isArray","map","extension","loaderByExt","findConfig","exts","length","ext","shift","configLocation","join","sync","loader","result","config","filePath","i","pkgJSONLoc","pkgJSON","pop","undefined","x","resolve","split","sep","filename","suppress","content","readFileSync","e","message","parse","readFile","yaml","safeLoad"],"mappings":"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","sourcesContent":["// MIT © 2017 azu\n// MIT © Zoltan Kochan\n// Original https://github.com/zkochan/rcfile\n\"use strict\";\nconst path = require(\"path\");\nconst debug = require(\"debug\")(\"rc-config-loader\");\nconst requireFromString = require(\"require-from-string\");\nconst JSON5 = require(\"json5\");\nconst fs = require(\"fs\");\nconst pathExists = require(\"path-exists\");\nconst objectAssign = require(\"object-assign\");\nconst keys = require(\"object-keys\");\n\nconst defaultLoaderByExt = {\n \".js\": loadJSConfigFile,\n \".json\": loadJSONConfigFile,\n \".yaml\": loadYAMLConfigFile,\n \".yml\": loadYAMLConfigFile\n};\n\nconst defaultOptions = {\n // does look for `package.json`\n packageJSON: false,\n // treat default(no ext file) as some extension\n defaultExtension: [\".json\", \".yaml\", \".yml\", \".js\"],\n cwd: process.cwd()\n};\n\n/**\n * @param {string} pkgName\n * @param {rcConfigLoaderOption} [opts]\n * @returns {{ config: Object, filePath:string } | undefined}\n */\nmodule.exports = function rcConfigLoader(pkgName, opts = {}) {\n // path/to/config or basename of config file.\n const configFileName = opts.configFileName || `.${pkgName}rc`;\n const defaultExtension = opts.defaultExtension || defaultOptions.defaultExtension;\n const cwd = opts.cwd || defaultOptions.cwd;\n const packageJSON = opts.packageJSON || defaultOptions.packageJSON;\n const packageJSONFieldName = typeof packageJSON === \"object\" ? packageJSON.fieldName : pkgName;\n\n const parts = splitPath(cwd);\n\n const loaders = Array.isArray(defaultExtension)\n ? defaultExtension.map(extension => defaultLoaderByExt[extension])\n : defaultLoaderByExt[defaultExtension];\n\n const loaderByExt = objectAssign({}, defaultLoaderByExt, {\n \"\": loaders\n });\n\n return findConfig({ parts, loaderByExt, configFileName, packageJSON, packageJSONFieldName });\n};\n\n/**\n *\n * @param {string[]} parts\n * @param {Object} loaderByExt\n * @param {string} configFileName\n * @param {boolean|Object} packageJSON\n * @param {string} packageJSONFieldName\n * @returns {{\n * config: string,\n * filePath: string\n * }|undefined}\n */\nfunction findConfig({ parts, loaderByExt, configFileName, packageJSON, packageJSONFieldName }) {\n const exts = keys(loaderByExt);\n while (exts.length) {\n const ext = exts.shift();\n const configLocation = join(parts, configFileName + ext);\n if (!pathExists.sync(configLocation)) {\n continue;\n }\n const loaders = loaderByExt[ext];\n if (!Array.isArray(loaders)) {\n const loader = loaders;\n const result = loader(configLocation);\n if (!result) {\n continue;\n }\n return {\n config: result,\n filePath: configLocation\n };\n }\n for (let i = 0; i < loaders.length; i++) {\n const loader = loaders[i];\n const result = loader(configLocation, true);\n if (!result) {\n continue;\n }\n return {\n config: result,\n filePath: configLocation\n };\n }\n }\n\n if (packageJSON) {\n const pkgJSONLoc = join(parts, \"package.json\");\n if (pathExists.sync(pkgJSONLoc)) {\n const pkgJSON = require(pkgJSONLoc);\n if (pkgJSON[packageJSONFieldName]) {\n return {\n config: pkgJSON[packageJSONFieldName],\n filePath: pkgJSONLoc\n };\n }\n }\n }\n if (parts.pop()) {\n return findConfig({ parts, loaderByExt, configFileName, packageJSON, packageJSONFieldName });\n }\n return undefined;\n}\n\nfunction splitPath(x) {\n return path.resolve(x || \"\").split(path.sep);\n}\n\nfunction join(parts, filename) {\n return path.resolve(parts.join(path.sep) + path.sep, filename);\n}\n\nfunction loadJSConfigFile(filePath, suppress) {\n debug(`Loading JavaScript config file: ${filePath}`);\n try {\n const content = fs.readFileSync(filePath, \"utf-8\");\n return requireFromString(content, filePath);\n } catch (e) {\n debug(`Error reading JavaScript file: ${filePath}`);\n if (!suppress) {\n e.message = `Cannot read config file: ${filePath}\\nError: ${e.message}`;\n throw e;\n }\n }\n}\n\nfunction loadJSONConfigFile(filePath, suppress) {\n debug(`Loading JSON config file: ${filePath}`);\n\n try {\n return JSON5.parse(readFile(filePath));\n } catch (e) {\n debug(`Error reading JSON file: ${filePath}`);\n if (!suppress) {\n e.message = `Cannot read config file: ${filePath}\\nError: ${e.message}`;\n throw e;\n }\n }\n}\n\nfunction readFile(filePath) {\n return fs.readFileSync(filePath, \"utf8\");\n}\n\nfunction loadYAMLConfigFile(filePath, suppress) {\n debug(`Loading YAML config file: ${filePath}`);\n\n // lazy load YAML to improve performance when not used\n const yaml = require(\"js-yaml\");\n\n try {\n // empty YAML file can be null, so always use\n return yaml.safeLoad(readFile(filePath)) || {};\n } catch (e) {\n debug(`Error reading YAML file: ${filePath}`);\n if (!suppress) {\n e.message = `Cannot read config file: ${filePath}\\nError: ${e.message}`;\n throw e;\n }\n }\n}\n"],"file":"rc-config-loader.js"}
|
package/package.json
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"src/"
|
|
11
11
|
],
|
|
12
12
|
"name": "rc-config-loader",
|
|
13
|
-
"version": "2.0.
|
|
13
|
+
"version": "2.0.4",
|
|
14
14
|
"description": "load config file from .{product}rc.{json,yml,js}",
|
|
15
15
|
"main": "lib/rc-config-loader.js",
|
|
16
16
|
"scripts": {
|
|
@@ -18,9 +18,7 @@
|
|
|
18
18
|
"build": "cross-env NODE_ENV=production babel src --out-dir lib --copy-files --source-maps",
|
|
19
19
|
"watch": "babel src --out-dir lib --watch --source-maps",
|
|
20
20
|
"prepublish": "npm run --if-present build",
|
|
21
|
-
"prettier": "prettier --write '**/*.{js,jsx,ts,tsx,css}'"
|
|
22
|
-
"precommit": "lint-staged",
|
|
23
|
-
"postcommit": "git reset"
|
|
21
|
+
"prettier": "prettier --write '**/*.{js,jsx,ts,tsx,css}'"
|
|
24
22
|
},
|
|
25
23
|
"keywords": [
|
|
26
24
|
"rc",
|
|
@@ -40,26 +38,27 @@
|
|
|
40
38
|
},
|
|
41
39
|
"homepage": "https://github.com/azu/rc-config-loader",
|
|
42
40
|
"dependencies": {
|
|
43
|
-
"debug": "^
|
|
41
|
+
"debug": "^4.1.1",
|
|
44
42
|
"js-yaml": "^3.12.0",
|
|
45
|
-
"json5": "^1.0
|
|
43
|
+
"json5": "^2.1.0",
|
|
46
44
|
"object-assign": "^4.1.0",
|
|
47
45
|
"object-keys": "^1.0.12",
|
|
48
46
|
"path-exists": "^3.0.0",
|
|
49
47
|
"require-from-string": "^2.0.2"
|
|
50
48
|
},
|
|
51
49
|
"devDependencies": {
|
|
52
|
-
"babel
|
|
53
|
-
"babel
|
|
54
|
-
"babel
|
|
55
|
-
"babel
|
|
56
|
-
"babel-
|
|
57
|
-
"
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
"
|
|
50
|
+
"@babel/cli": "^7.0.0",
|
|
51
|
+
"@babel/core": "^7.0.0",
|
|
52
|
+
"@babel/preset-env": "^7.0.0",
|
|
53
|
+
"@babel/register": "^7.0.0",
|
|
54
|
+
"babel-preset-jsdoc-to-assert": "^5.0.0",
|
|
55
|
+
"babel-preset-power-assert": "^3.0.0",
|
|
56
|
+
"chai": "^4.2.0",
|
|
57
|
+
"cross-env": "^5.2.0",
|
|
58
|
+
"eslint": "^6.0.1",
|
|
59
|
+
"husky": "^3.0.0",
|
|
60
|
+
"lint-staged": "^9.1.0",
|
|
61
|
+
"mocha": "^6.1.4",
|
|
63
62
|
"power-assert": "^1.4.2",
|
|
64
63
|
"prettier": "^1.8.2"
|
|
65
64
|
},
|
|
@@ -72,5 +71,11 @@
|
|
|
72
71
|
"prettier --write",
|
|
73
72
|
"git add"
|
|
74
73
|
]
|
|
74
|
+
},
|
|
75
|
+
"husky": {
|
|
76
|
+
"hooks": {
|
|
77
|
+
"post-commit": "git reset",
|
|
78
|
+
"pre-commit": "lint-staged"
|
|
79
|
+
}
|
|
75
80
|
}
|
|
76
81
|
}
|