UNPKG

taboo-cms

Version:
90 lines (74 loc) 2.65 kB
const _ = require('lodash'); const path = require('path'); const appPackageJson = require(path.join(process.cwd(), 'package.json')); // Configs const server = require('./server.js'); const logger = require('./logger.js'); const db = require('./db.js'); const api = require('./api.js'); const client = require('./client.js'); const i18n = require('./i18n.js'); const passport = require('./passport.js'); const mailer = require('./mailer.js'); const sockets = require('./sockets.js'); // Default environment value, it can be set in local.js or passed as process.env.NODE_ENV let env = 'development'; //Get default configs let config = { debug: false, server, api, logger, db, client, i18n, passport, mailer, sockets, }; let local; let envConfigPath; let mainConfig = require(path.join(process.cwd(), config.server.configDir, 'config.js')); try { local = require(path.join(process.cwd(), config.server.configDir, 'local.js')); } catch (e) { //TODO for now do not throw an error, as in some environments it might not use local.js local = {}; console.error(e); // eslint-disable-line no-console console.error("Make sure to copy 'SAMPLE.local.js' file and rename it to 'local.js' inside 'config' folder"); // eslint-disable-line no-console, quotes // throw new Error("Make sure you copied 'SAMPLE.local.js' file and renamed it to 'local.js' inside 'config' folder"); } // Set env from mainConfig, if there is one if (mainConfig.environment) { env = mainConfig.environment; } // Override env from local, if there is one if (local.environment) { env = local.environment; } // Override env from process.env.NODE_ENV if passed if (process.env.NODE_ENV) { env = process.env.NODE_ENV; } else { process.env.NODE_ENV = env; } // Selected Environment console.info('Selected Environment:', env); // eslint-disable-line no-console // Merge this config with mainConfig _.merge(config, mainConfig); envConfigPath = path.join(process.cwd(), config.server.configDir, `/environment/${env}.js`); try { // Merge Environment Specific Configuration _.merge(config, require(envConfigPath)); } catch (e) { //TODO for now do not throw an error console.error(`Environment config file not found: '${envConfigPath}'`); // eslint-disable-line no-console // throw new Error(`Environment config file not found: './environment/${env}.js'`); } // Override if there is anything from local.js _.merge(config, local); //Set version from package.json config.version = appPackageJson.version; // We need to set it last, if just in case it was passed as process.env.NODE_ENV config.environment = env; module.exports = config;