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