const webpack = require('webpack'); const webpackMerge = require('webpack-merge'); const ExtractTextPlugin = require('extract-text-webpack-plugin'); const ManifestPlugin = require('webpack-manifest-plugin'); const commonConfig = require('./common.js'); module.exports = function() { return webpackMerge(commonConfig(), { output: { filename: '[name].js' }, devtool: 'source-map', plugins: [ new webpack.DefinePlugin({ 'process.env': { 'NODE_ENV': JSON.stringify('production') } }), new webpack.optimize.UglifyJsPlugin({ beautify: false, mangle: { screw_ie8: true, keep_fnames: true }, compress: { screw_ie8: true, warnings: false }, comments: false }), new ExtractTextPlugin('[name].css'), new ManifestPlugin({ fileName: 'manifest.json', }) ], module: { rules: [ { enforce: 'pre', test: /\.js$/, loader: 'eslint-loader', exclude: /node_modules/, }, { test: /\.js$/, exclude: /(node_modules)/, use: { loader: 'babel-loader', options: { presets: ['env'] } } }, { test: /\.(s)?css$/, use: ExtractTextPlugin.extract({ fallback: 'style-loader', use: [ { loader: 'css-loader', options: { importLoaders: 1, minimize: { discardComments: { removeAll: true }, core: true, minifyFontValues: true } } }, 'postcss-loader', 'sass-loader' ] }) }, { test: /\.(jpg|png|gif|svg)$/, use: { loader: 'file-loader', options: { name: 'img/[name].[ext]', } } }, { test: /\.(eot|ttf|woff|woff2)$/, use: { loader: 'file-loader', options: { name: 'fonts/[name].[ext]', } } } ] }, }) };