'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;