UNPKG

create-js-app-scripts

Version:
50 lines (40 loc) 1.53 kB
'use strict'; 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;