node-env-configs
Version:
Loads configs based on your environment
92 lines (79 loc) • 3.02 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _fs = require('fs');
var _fs2 = _interopRequireDefault(_fs);
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var logger = function logger(type, msg) {
var isSilent = process.env.SUPPRESS_ENV_CONFIGS_WARNINGS == 'true' || false;
var loggerConfig = {
warning: {
type: 'warn',
color: '\x1b[33m%s\x1b[0m'
},
error: {
type: 'error',
color: '\x1b[31m%s\x1b[0m'
}
};
!isSilent && console[loggerConfig[type.toLowerCase()].type].apply(null, [loggerConfig[type.toLowerCase()].color, msg]);
};
var readEnvConf = function readEnvConf(env, cwd, configsPath) {
var envJsPath = _path2.default.join(configsPath, env + '.js');
var envJsonPath = _path2.default.join(configsPath, env + '.json');
var envJsExists = _fs2.default.existsSync(envJsPath);
var envJsonExists = _fs2.default.existsSync(envJsonPath);
if (envJsExists || envJsonExists) {
if (envJsExists) {
return require(envJsPath);
}
try {
return require(envJsonPath);
} catch (e) {
logger('error', '[Error]: JSON parse failed');
throw new Error(e);
}
} else {
logger('warning', '[Warning]: No config file for environment \'' + env + '\' found at \'' + configsPath + '\'. Returning \'default\' config.');
return {};
}
};
var envConfigs = function envConfigs() {
var ENV = process.env.NODE_ENV || 'default';
var ENV_CONFIGS_DIR = process.env.ENV_CONFIGS_DIR || '/configs';
var CWD = process.cwd();
var CONFIGS_PATH = _path2.default.join(CWD, ENV_CONFIGS_DIR);
/***
* Get the default config from the ENV_CONFIG_DIR
*
* The config can be a js file or a json file.
*
***/
var defaultJsPath = _path2.default.join(CONFIGS_PATH, 'default.js');
var defaultJsonPath = _path2.default.join(CONFIGS_PATH, 'default.json');
var defaultJsExists = _fs2.default.existsSync(defaultJsPath);
var defaultJsonExists = _fs2.default.existsSync(defaultJsonPath);
if (defaultJsExists || defaultJsonExists) {
var defaultconfig = void 0;
if (defaultJsExists) {
defaultconfig = require(defaultJsPath);
} else {
try {
defaultconfig = require(defaultJsonPath);
} catch (e) {
logger('error', '[Error]: JSON parse failed');
throw new Error(e);
}
}
var envConfig = readEnvConf(ENV.toLowerCase(), CWD, CONFIGS_PATH);
return _extends({}, defaultconfig, envConfig);
} else {
logger('error', '[Error]: No \'Default\' config file found at \'' + CONFIGS_PATH + '\'');
return {};
}
};
exports.default = envConfigs();