create-js-app-scripts
Version:
Configuration and scripts for Create JS App
50 lines (40 loc) • 1.53 kB
JavaScript
;
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; };
const fs = require('fs');
const path = require('path');
function getEnvParam(param) {
if (process.env[param]) {
return process.env[param];
}
throw new Error(`process.env.${param} is not set`);
}
const cwd = fs.realpathSync(process.cwd());
const defaultConfig = {
env: {
NODE_ENV: getEnvParam('NODE_ENV')
},
plugins: [require('../plugins/watchConfiguration')],
settings: {
appNodeModulesDir: path.resolve(cwd, './node_modules'),
assetsPath: path.resolve(cwd, './build/assets.json'),
appSrc: path.resolve(cwd, './src'),
babelrc: null,
eslintrc: path.resolve(cwd, './.eslintrc')
}
};
module.exports = function loadConfiguration(env) {
try {
const configModulePath = env.configFilePath();
// first clean up require cache so we always load fresh config
delete require.cache[configModulePath];
const config = require(configModulePath); // eslint-disable-line global-require
return {
env: _extends({}, defaultConfig.env, config.env || {}),
plugins: [...defaultConfig.plugins, ...(config.plugins || [])],
settings: _extends({}, defaultConfig.settings, config.settings)
};
} catch (e) {
return defaultConfig;
}
};
module.exports.defaultConfig = defaultConfig;