Skip to content

Commit 5f38764

Browse files
committed
feat: add mjs support
1 parent 31c856f commit 5f38764

File tree

1 file changed

+34
-24
lines changed

1 file changed

+34
-24
lines changed

lib/groups/config.js

Lines changed: 34 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const { existsSync } = require('fs');
2-
const { resolve, sep, dirname } = require('path');
2+
const { resolve, sep, dirname, parse } = require('path');
33
const { extensions } = require('interpret');
44

55
const GroupHelper = require('../utils/group-helper');
@@ -19,28 +19,32 @@ const getDefaultConfigFiles = () => {
1919
}
2020

2121
const getConfigInfoFromFileName = (filename) => {
22-
const originalExt = filename.split('.').pop();
23-
return Object.keys(extensions).filter(ext => {
24-
return '.'.concat(originalExt) === ext;
25-
}).
26-
map(ext => {
27-
return {
28-
path: resolve(filename),
29-
ext: ext,
30-
module: extensions[ext]
31-
}
32-
}).filter(e => existsSync(e.path));
22+
const fileMetaData = parse(filename);
23+
return Object.keys(extensions)
24+
.filter(ext => ext.includes(fileMetaData.ext))
25+
.filter(ext => fileMetaData.base.substr(fileMetaData.base.length - ext.length) === ext)
26+
.map(ext => {
27+
return {
28+
path: resolve(filename),
29+
ext: ext,
30+
module: extensions[ext]
31+
}
32+
})
33+
.filter(e => existsSync(e.path));
3334
}
3435

3536
class ConfigGroup extends GroupHelper {
3637
constructor(options) {
3738
super(options);
3839
}
3940

40-
require(path) {
41-
const result = require(path);
41+
requireModule(path, cb) {
42+
const result = cb(path);
4243
if (result && result.__esModule && result.default) {
43-
return result.default;
44+
return {
45+
content: result.default,
46+
path: path
47+
};
4448
}
4549
return {
4650
path: path,
@@ -49,15 +53,21 @@ class ConfigGroup extends GroupHelper {
4953
}
5054

5155
requireConfig(configModule) {
52-
return (() => {
53-
try {
54-
if(!configModule.module) {
55-
return this.require(configModule.path);
56-
}
57-
} catch(err) {
58-
console.log(err);
59-
}
60-
})();
56+
if(!configModule.module) {
57+
return this.requireModule(configModule.path, require);
58+
} else if(Array.isArray(configModule.module)) {
59+
configModule.module.forEach(mod => {
60+
const moduleRequire = require(mod.module);
61+
return this.requireModule(configModule.path, moduleRequire);
62+
});
63+
} else if(typeof configModule.module === 'string') {
64+
const moduleRequire = require(configModule.module);
65+
return this.requireModule(configModule.path, moduleRequire);
66+
}
67+
else {
68+
const moduleRequire = require(configModule.module.module)(module);
69+
return this.requireModule(configModule.path, moduleRequire);
70+
}
6171
}
6272

6373
async finalize(moduleObj) {

0 commit comments

Comments
 (0)