UNPKG

we-core

Version:

We.js is a node.js framework for build real time applications, sites or blogs!

84 lines (62 loc) 2.06 kB
/** * Static configs loader */ var fs = require('fs'); var path = require('path'); var _ = require('lodash'); /** * Get project static configs * * @param {String} projectPath project path ( opcional ) * @return {Object} configs */ var staticConfig = function init(projectPath, app) { if (!projectPath) throw new Error('project path is required for load static configs'); // return configs if already is loaded if (app.staticConfigsIsLoad) return app.config; // - load and merge project configs var projectConfigFolder = app.projectConfigFolder; var files = []; try { files = fs.readdirSync(projectConfigFolder); } catch(e) { if (e.code != 'ENOENT') console.error('Error on load project config folder: ', e); } var file; for (var i = 0; i < files.length; i++) { if (files[i] == 'local.js') continue; if (!files[i].endsWith('.js')) continue; // only accepts .js config files file = path.resolve(projectConfigFolder, files[i]); // skip dirs if (fs.lstatSync(file).isDirectory()) continue; _.merge(app.config, require(file)); } var localConfigFile; try { // load local.js after others configs localConfigFile = require( path.resolve(projectConfigFolder, 'local.js') ); } catch(e) { if (e.code != 'MODULE_NOT_FOUND' ) { console.error('Unknow error on load local.js config:', e); } localConfigFile = {}; } // load project local config file _.merge(app.config, localConfigFile); app.staticConfigsIsLoad = true; return app.config; }; staticConfig.loadPluginConfigs = function(we) { if (we.pluginConfigsIsLoad) return we.config; var pluginManager = we.pluginManager; var pluginConfigs = {}; // - load and merge plugin configs for (var pluginName in pluginManager.plugins) { _.merge(pluginConfigs, pluginManager.plugins[pluginName].configs); } // load project local config file we.config = _.merge(pluginConfigs, we.config); we.pluginConfigsIsLoad = true; return we.config; } module.exports = staticConfig;