const path = require('path'); const merge = require('webpack-merge'); const common = require('./webpack.common.js'); const UglifyJsPlugin = require('uglifyjs-webpack-plugin'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin'); const ZipPlugin = require('zip-webpack-plugin'); const _merge = require('lodash/merge'); module.exports = merge({ customizeObject(a, b, key) { if (key === 'module') { return _merge({}, a, b); } return undefined; } })(common, { mode: 'production', module: { rules: [ { test: /\.css$/, use: [ { loader: MiniCssExtractPlugin.loader }, 'css-loader' ] } ] }, plugins: [ new MiniCssExtractPlugin({ filename: 'css/[name].css' }), new ZipPlugin({ path: path.resolve(__dirname, 'dest'), filename: 'acss_devtools-prod.zip' }) ], optimization: { minimizer: [ new UglifyJsPlugin({ cache: true, parallel: true, sourceMap: true }), new OptimizeCSSAssetsPlugin({}) ] } });