From 29a3813adaa54adaafab1678e30d754ecf0c9e3b Mon Sep 17 00:00:00 2001 From: David Mehren Date: Mon, 2 Jul 2018 22:24:56 +0200 Subject: Upgrade to Webpack 4 - first try Signed-off-by: David Mehren --- webpack.production.js | 62 +++++++++++++++++++++++++-------------------------- 1 file changed, 31 insertions(+), 31 deletions(-) (limited to 'webpack.production.js') diff --git a/webpack.production.js b/webpack.production.js index a79643b6..22093b1b 100644 --- a/webpack.production.js +++ b/webpack.production.js @@ -3,7 +3,8 @@ var webpack = require('webpack') var path = require('path') var ExtractTextPlugin = require('extract-text-webpack-plugin') var OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin') -var ParallelUglifyPlugin = require('webpack-parallel-uglify-plugin') +const UglifyJsPlugin = require('uglifyjs-webpack-plugin') +const MiniCssExtractPlugin = require('mini-css-extract-plugin') module.exports = [Object.assign({}, baseConfig, { plugins: baseConfig.plugins.concat([ @@ -11,44 +12,33 @@ module.exports = [Object.assign({}, baseConfig, { 'process.env': { 'NODE_ENV': JSON.stringify('production') } - }), - new ParallelUglifyPlugin({ - uglifyJS: { - compress: { - warnings: false - }, - output: { - max_line_len: 1000000 - }, - mangle: false, - sourceMap: false - } - }), - new ExtractTextPlugin('[name].[hash].css') + }) ]), + optimization: { + minimizer: [ + new UglifyJsPlugin({ + parallel: true, + cache: true + }) + ], + splitChunks: { + chunks: 'async', + minChunks: Infinity + } + }, + output: { path: path.join(__dirname, 'public/build'), publicPath: '/build/', - filename: '[id].[name].[hash].js', - baseUrl: '<%- url %>' + filename: '[id].[name].[hash].js' + // baseUrl: '<%- url %>' } }), { entry: { htmlExport: path.join(__dirname, 'public/js/htmlExport.js') }, - module: { - loaders: [{ - test: /\.css$/, - loader: ExtractTextPlugin.extract('style-loader', 'css-loader') - }, { - test: /\.scss$/, - loader: ExtractTextPlugin.extract('style-loader', 'sass-loader') - }, { - test: /\.less$/, - loader: ExtractTextPlugin.extract('style-loader', 'less-loader') - }] - }, + output: { path: path.join(__dirname, 'public/build'), publicPath: '/build/', @@ -61,6 +51,16 @@ module.exports = [Object.assign({}, baseConfig, { } }), new ExtractTextPlugin('html.min.css'), - new OptimizeCssAssetsPlugin() - ] + new OptimizeCssAssetsPlugin(), + new MiniCssExtractPlugin() + ], + module: { + rules: [{ + test: /\.css$/, + use: [ + MiniCssExtractPlugin.loader, + 'css-loader' + ] + }] + } }] -- cgit v1.2.3 From a6d3ac647b144341bedb1221fe65f0abd3d574d5 Mon Sep 17 00:00:00 2001 From: David Mehren Date: Tue, 3 Jul 2018 22:47:50 +0200 Subject: Upgrade to Webpack 4 - fix 'export as html' chunk Signed-off-by: David Mehren --- webpack.production.js | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'webpack.production.js') diff --git a/webpack.production.js b/webpack.production.js index 22093b1b..67387583 100644 --- a/webpack.production.js +++ b/webpack.production.js @@ -1,8 +1,7 @@ var baseConfig = require('./webpackBaseConfig') var webpack = require('webpack') var path = require('path') -var ExtractTextPlugin = require('extract-text-webpack-plugin') -var OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin') +const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin') const UglifyJsPlugin = require('uglifyjs-webpack-plugin') const MiniCssExtractPlugin = require('mini-css-extract-plugin') @@ -35,6 +34,9 @@ module.exports = [Object.assign({}, baseConfig, { // baseUrl: '<%- url %>' } }), { + // This Chunk is used in the 'save as html' feature. + // It is embedded in the html file and contains CSS for styling. + entry: { htmlExport: path.join(__dirname, 'public/js/htmlExport.js') }, @@ -50,10 +52,17 @@ module.exports = [Object.assign({}, baseConfig, { 'NODE_ENV': JSON.stringify('production') } }), - new ExtractTextPlugin('html.min.css'), - new OptimizeCssAssetsPlugin(), - new MiniCssExtractPlugin() + new MiniCssExtractPlugin({ + filename: 'html.min.css' + }) ], + + optimization: { + minimizer: [ + new OptimizeCSSAssetsPlugin({}) + ] + }, + module: { rules: [{ test: /\.css$/, -- cgit v1.2.3