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