From 9ef64660ce97716db1f485cd46bd3cd922f44129 Mon Sep 17 00:00:00 2001 From: ta264 Date: Sun, 5 Jan 2020 21:17:21 +0000 Subject: [PATCH] Option for production build with profiling --- frontend/gulp/webpack.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/frontend/gulp/webpack.js b/frontend/gulp/webpack.js index ef84a356a..d02d8cdb9 100644 --- a/frontend/gulp/webpack.js +++ b/frontend/gulp/webpack.js @@ -6,17 +6,20 @@ const webpack = require('webpack'); const errorHandler = require('./helpers/errorHandler'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const HtmlWebpackPlugin = require('html-webpack-plugin'); +const TerserPlugin = require('terser-webpack-plugin'); const uiFolder = 'UI'; const frontendFolder = path.join(__dirname, '..'); const srcFolder = path.join(frontendFolder, 'src'); const isProduction = process.argv.indexOf('--production') > -1; +const isProfiling = isProduction && process.argv.indexOf('--profile') > -1; const distFolder = path.resolve(frontendFolder, '..', '_output', uiFolder); console.log('Source Folder:', srcFolder); console.log('Output Folder:', distFolder); console.log('isProduction:', isProduction); +console.log('isProfiling:', isProduction); const cssVarsFiles = [ '../src/Styles/Variables/colors', @@ -213,6 +216,24 @@ const config = { } }; +if (isProfiling) { + config.resolve.alias['react-dom$'] = 'react-dom/profiling'; + config.resolve.alias['scheduler/tracing'] = 'scheduler/tracing-profiling'; + + config.optimization.minimizer = [ + new TerserPlugin({ + cache: true, + parallel: true, + sourceMap: true, // Must be set to true if using source-maps in production + terserOptions: { + mangle: false, + keep_classnames: true, + keep_fnames: true + } + }) + ]; +} + gulp.task('webpack', () => { return webpackStream(config) .pipe(gulp.dest('_output/UI'));