51 lines
1.8 KiB
JavaScript
51 lines
1.8 KiB
JavaScript
const fs = require('fs'),
|
|
path = require('path'),
|
|
isObject = require('lodash/isObject'),
|
|
merge = require('lodash/merge');
|
|
|
|
module.exports = () => {
|
|
console.log('Reading modules config file...');
|
|
const p = path.join(__dirname, '..', 'etc', 'modules.config.json');
|
|
|
|
if (!fs.existsSync(path.join(__dirname, '..', 'generated'))) {
|
|
fs.mkdirSync(path.join(__dirname, '..', 'generated'));
|
|
}
|
|
if (!fs.existsSync(p)) {
|
|
console.error('modules.config.json was not found in [etc] folder');
|
|
return undefined;
|
|
}
|
|
let moduleList = require(p);
|
|
|
|
let fdArray = ['export default ['];
|
|
|
|
if (fs.existsSync(path.join(__dirname, '..', 'etc', `modules.${process.env.NODE_ENV}.json`))) {
|
|
moduleList = merge(
|
|
moduleList,
|
|
require(path.join(__dirname, '..', 'etc', `modules.${process.env.NODE_ENV}.json`)),
|
|
);
|
|
}
|
|
|
|
if (fs.existsSync(path.join(__dirname, '..', 'etc', 'modules.local.json'))) {
|
|
moduleList = merge(moduleList, require(path.join(__dirname, '..', 'etc', 'modules.local.json')));
|
|
}
|
|
|
|
Object.keys(moduleList).forEach(moduleName => {
|
|
if (isObject(moduleList[moduleName])) {
|
|
const moduleConfig = moduleList[moduleName];
|
|
|
|
if (
|
|
moduleConfig.type === 'package' &&
|
|
(Object.prototype.hasOwnProperty.call(moduleConfig, 'enabled') ? moduleConfig.enabled : true)
|
|
) {
|
|
fdArray.push(` () => require('${moduleConfig.ref}'),`);
|
|
console.log(`${moduleName} => added package as static require dependency`);
|
|
}
|
|
}
|
|
});
|
|
|
|
fdArray.push('];');
|
|
|
|
fs.writeFileSync(path.join(__dirname, '..', 'generated', 'module.require.js'), fdArray.join('\n'));
|
|
console.log('Finished...');
|
|
};
|