You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ambar2/FrontEnd/config/index.js

134 lines
3.9 KiB
JavaScript

/* eslint key-spacing:0 spaced-comment:0 */
import path from 'path'
import _debug from 'debug'
import { argv } from 'yargs'
import ip from 'ip'
const localip = ip.address()
const debug = _debug('app:config')
debug('Creating default configuration.')
// ========================================================
// Default Configuration
// ========================================================
const config = {
env : process.env.NODE_ENV || 'development',
// ----------------------------------
// Project Structure
// ----------------------------------
path_base : path.resolve(__dirname, '..'),
dir_client : 'src',
dir_dist : 'dist',
dir_server : 'server',
dir_test : 'tests',
// ----------------------------------
// Server Configuration
// ----------------------------------
server_host : process.env.FRONTEND_HOST || localip, // use string 'localhost' to prevent exposure on local network
server_port : process.env.PORT || 3000,
// ----------------------------------
// Compiler Configuration
// ----------------------------------
compiler_css_modules : true,
compiler_devtool : 'source-map',
compiler_hash_type : 'hash',
compiler_fail_on_warning : false,
compiler_quiet : false,
compiler_public_path : '/',
compiler_stats : {
chunks : false,
chunkModules : false,
colors : true
},
compiler_vendor : [
'babel-polyfill',
'history',
'react',
'react-redux',
'react-router',
'react-router-redux',
'redux'
],
// ----------------------------------
// Test Configuration
// ----------------------------------
coverage_reporters : [
{ type : 'text-summary' },
{ type : 'lcov', dir : 'coverage' }
]
}
/************************************************
-------------------------------------------------
All Internal Configuration Below
Edit at Your Own Risk
-------------------------------------------------
************************************************/
// ------------------------------------
// Environment
// ------------------------------------
// N.B.: globals added here must _also_ be added to .eslintrc
config.globals = {
'process.env' : {
'NODE_ENV' : JSON.stringify(config.env)
},
'NODE_ENV' : config.env,
'__DEV__' : config.env === 'development',
'__PROD__' : config.env === 'production',
'__TEST__' : config.env === 'test',
'__DEBUG__' : config.env === 'development' && !argv.no_debug,
'__COVERAGE__' : !argv.watch && config.env === 'test',
'__BASENAME__' : JSON.stringify(process.env.BASENAME || '')
}
// ------------------------------------
// Validate Vendor Dependencies
// ------------------------------------
const pkg = require('../package.json')
config.compiler_vendor = config.compiler_vendor
.filter((dep) => {
if (pkg.dependencies[dep]) return true
debug(
`Package "${dep}" was not found as an npm dependency in package.json; ` +
`it won't be included in the webpack vendor bundle.
Consider removing it from vendor_dependencies in ~/config/index.js`
)
})
// ------------------------------------
// Utilities
// ------------------------------------
const resolve = path.resolve
const base = (...args) =>
Reflect.apply(resolve, null, [config.path_base, ...args])
config.utils_paths = {
base : base,
client : base.bind(null, config.dir_client),
dist : base.bind(null, config.dir_dist)
}
// ========================================================
// Environment Configuration
// ========================================================
debug(`Looking for environment overrides for NODE_ENV "${config.env}".`)
const environments = require('./environments').default
const overrides = environments[config.env]
if (overrides) {
debug('Found overrides, applying to default configuration.')
Object.assign(config, overrides(config))
} else {
debug('No environment overrides found, defaults will be used.')
}
export default config