@cabloy/dotenv 1.1.11 → 1.1.12
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/dist/index.js +55 -50
- package/package.json +3 -4
package/dist/index.js
CHANGED
|
@@ -3,57 +3,62 @@ import { cascadeExtendKeys } from 'cascade-extend';
|
|
|
3
3
|
import dotenv from 'dotenv';
|
|
4
4
|
import dotenvExpand from 'dotenv-expand';
|
|
5
5
|
import { globbySync } from 'globby';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
6
|
+
|
|
7
|
+
function loadEnvs(meta, dir, prefix = '.env', postfix) {
|
|
8
|
+
// envfiles
|
|
9
|
+
const envFiles = getEnvFiles(meta, dir, prefix, postfix);
|
|
10
|
+
if (!envFiles) return undefined;
|
|
11
|
+
// dotenv
|
|
12
|
+
const result = dotenv.config({
|
|
13
|
+
path: envFiles.reverse()
|
|
14
|
+
});
|
|
15
|
+
if (result.error) {
|
|
16
|
+
throw result.error;
|
|
17
|
+
}
|
|
18
|
+
// expand
|
|
19
|
+
dotenvExpand.expand(result);
|
|
20
|
+
// ok
|
|
21
|
+
return result.parsed;
|
|
20
22
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
function metaToScope(meta) {
|
|
24
|
+
const scope = {};
|
|
25
|
+
for (const key in meta) {
|
|
26
|
+
scope[meta[key]] = true;
|
|
27
|
+
}
|
|
28
|
+
return scope;
|
|
27
29
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
30
|
+
function getEnvFiles(meta, dir, prefix, postfix) {
|
|
31
|
+
// files
|
|
32
|
+
let files = globbySync(`${prefix}*`, {
|
|
33
|
+
cwd: dir
|
|
34
|
+
});
|
|
35
|
+
const fileNames = files.map(item => {
|
|
36
|
+
if (postfix) {
|
|
37
|
+
item = item.substring(0, item.length - postfix.length);
|
|
38
|
+
}
|
|
39
|
+
return item;
|
|
40
|
+
});
|
|
41
|
+
// source
|
|
42
|
+
const source = {};
|
|
43
|
+
for (const fileName of fileNames) {
|
|
44
|
+
source[fileName] = true;
|
|
45
|
+
}
|
|
46
|
+
// scope
|
|
47
|
+
const scope = metaToScope(meta);
|
|
48
|
+
// extend
|
|
49
|
+
let keys = cascadeExtendKeys(scope, source, prefix, '.');
|
|
50
|
+
if (!keys) return undefined;
|
|
51
|
+
// mine
|
|
52
|
+
keys = keys.filter(item => !item.includes('.mine')).concat(keys.filter(item => item.includes('.mine')));
|
|
53
|
+
// files
|
|
54
|
+
files = keys.map(key => {
|
|
55
|
+
let file = path.join(dir, key);
|
|
56
|
+
if (postfix) {
|
|
57
|
+
file = `${file}${postfix}`;
|
|
41
58
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
let keys = cascadeExtendKeys(scope, source, prefix, '.');
|
|
46
|
-
if (!keys)
|
|
47
|
-
return undefined;
|
|
48
|
-
// mine
|
|
49
|
-
keys = keys.filter(item => !item.includes('.mine')).concat(keys.filter(item => item.includes('.mine')));
|
|
50
|
-
// files
|
|
51
|
-
files = keys.map(key => {
|
|
52
|
-
let file = path.join(dir, key);
|
|
53
|
-
if (postfix) {
|
|
54
|
-
file = `${file}${postfix}`;
|
|
55
|
-
}
|
|
56
|
-
return file;
|
|
57
|
-
});
|
|
58
|
-
return files;
|
|
59
|
+
return file;
|
|
60
|
+
});
|
|
61
|
+
return files;
|
|
59
62
|
}
|
|
63
|
+
|
|
64
|
+
export { getEnvFiles, loadEnvs, metaToScope };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cabloy/dotenv",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.1.
|
|
4
|
+
"version": "1.1.12",
|
|
5
5
|
"description": "cabloy dotenv",
|
|
6
6
|
"publishConfig": {
|
|
7
7
|
"access": "public"
|
|
@@ -25,15 +25,14 @@
|
|
|
25
25
|
"dist"
|
|
26
26
|
],
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"cascade-extend": "^2.1.
|
|
28
|
+
"cascade-extend": "^2.1.11",
|
|
29
29
|
"dotenv": "^16.4.5",
|
|
30
30
|
"dotenv-expand": "^11.0.6",
|
|
31
31
|
"globby": "^16.0.0"
|
|
32
32
|
},
|
|
33
33
|
"gitHead": "0eab9dc4a5622caffe89e7b1b3f02c08ccbc4c4b",
|
|
34
34
|
"scripts": {
|
|
35
|
-
"lint": "eslint .",
|
|
36
35
|
"clean": "rimraf dist tsconfig.build.tsbuildinfo",
|
|
37
|
-
"tsc:publish": "npm run clean && tsc -p tsconfig.build.json"
|
|
36
|
+
"tsc:publish": "npm run clean && vona :bin:buildGeneral && tsc -p tsconfig.build.json"
|
|
38
37
|
}
|
|
39
38
|
}
|