blob: 22da77e6ed33527e49c806ac95b540d0af3f7bc8 [file] [log] [blame]
'use strict';
let path = require('path');
let webpack = require('webpack');
let cloneDeep = require('lodash/cloneDeep');
let assign = require('lodash/assign');
let webpackCommon = require('./webpack.common');
// copying the common config
let webpackProdConfig = cloneDeep(webpackCommon);
// setting production settings
assign(webpackProdConfig, {
devtool: undefined,
cache: true,
output: {
path: path.join(__dirname, 'dist'),
publicPath: '/onboarding/',
filename: '[name].js'
},
resolveLoader: {
modules: [path.join(__dirname, 'node_modules'), path.resolve('.')],
alias: {
'config-json-loader': 'tools/webpack/config-json-loader/index.js'
}
},
plugins: [
new webpack.DefinePlugin({
'process.env': {
// This has effect on the react lib size
NODE_ENV: JSON.stringify('production')
},
DEBUG: false,
DEV: false
}),
new webpack.optimize.UglifyJsPlugin(),
new webpack.LoaderOptionsPlugin({
options: {
eslint: {
configFile: './.eslintrc',
emitError: true,
emitWarning: true,
failOnError: true
}
}
})
]
});
webpackProdConfig.module.rules = webpackProdConfig.module.rules.filter(
rule =>
rule.enforce !== 'pre' ||
(rule.enforce === 'pre' && rule.loader !== 'source-map-loader')
);
webpackProdConfig.module.rules.forEach(loader => {
if (loader.use && loader.use[0].loader === 'style-loader') {
loader.use = loader.use.map(loaderObj =>
loaderObj.loader.replace('?sourceMap', '')
);
}
});
webpackProdConfig.module.rules.push({
test: /config.json$/,
use: [{ loader: 'config-json-loader' }]
});
module.exports = webpackProdConfig;