| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 | const webpack = require('webpack')const merge = require('webpack-merge')const path = require('path')const CleanWebpackPlugin = require('clean-webpack-plugin')const UglifyJSPlugin = require('uglifyjs-webpack-plugin')const ExtractTextPlugin = require('extract-text-webpack-plugin')const OfflinePlugin = require('offline-plugin')const DuplicatePackageCheckerPlugin = require('duplicate-package-checker-webpack-plugin')const SimpleProgressWebpackPlugin = require('simple-progress-webpack-plugin')const common = require('./webpack.common.js')module.exports = merge(common, {  module: {    rules: []  },  plugins: [    new SimpleProgressWebpackPlugin({      format: 'expanded'    }),    new CleanWebpackPlugin([      'assets/js/*.*',      'assets/css/*.*',      'assets/*.js',      'assets/*.json'    ], {      root: process.cwd(),      verbose: false    }),    new UglifyJSPlugin({      cache: path.join(process.cwd(), '.webpack-cache/uglify'),      parallel: true    }),    new webpack.DefinePlugin({      'process.env.NODE_ENV': JSON.stringify('production')    }),    new ExtractTextPlugin('css/bundle.css'),    new OfflinePlugin({      publicPath: '/',      externals: ['/'],      caches: {        main: [          'js/runtime.js',          'js/vendor.js',          'js/client.js'        ],        additional: [          ':externals:'        ],        optional: [          'js/*.chunk.js'        ]      },      safeToUseOptionalCaches: true    }),    new DuplicatePackageCheckerPlugin(),    // Disable Extract Text Plugin stats:    {      apply(compiler) {        compiler.plugin('done', stats => {          if (Array.isArray(stats.compilation.children)) {            stats.compilation.children = stats.compilation.children.filter(child => {              return child.name.indexOf('extract-text-webpack-plugin') !== 0            })          }        })      }    }  ]})
 |