const webpack = require('webpack') const merge = require('webpack-merge') const CleanWebpackPlugin = require('clean-webpack-plugin') const OfflinePlugin = require('offline-plugin') const SimpleProgressWebpackPlugin = require('simple-progress-webpack-plugin') const OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin') const common = require('./webpack.common.js') module.exports = merge(common, { mode: 'production', module: { rules: [] }, plugins: [ new SimpleProgressWebpackPlugin({ format: 'expanded' }), new CleanWebpackPlugin([ 'assets/js/*.*', 'assets/css/*.*', 'assets/*.js', 'assets/*.json' ], { root: process.cwd(), verbose: false }), new webpack.DefinePlugin({ 'process.env.NODE_ENV': JSON.stringify('production') }), new OptimizeCssAssetsPlugin({ cssProcessorOptions: { discardComments: { removeAll: true } }, canPrint: true }), new OfflinePlugin({ ServiceWorker: { minify: false }, publicPath: '/', externals: ['/'], caches: { main: [ 'js/client.js' ], additional: [ ':externals:' ], optional: [ 'js/*.chunk.js' ] }, safeToUseOptionalCaches: true }) ] })