From f3e185c978e58193b5a2024e069699b29f49f3d9 Mon Sep 17 00:00:00 2001 From: Johannes Faltermeier Date: Mon, 2 Sep 2024 12:19:55 +0200 Subject: [PATCH] Do not run TerserPlugin in parallel * especially in production mode this may lead to OOM issues on smaller/shared build nodes Contributed on behalf of STMicroelectronics --- applications/electron/webpack.config.js | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/applications/electron/webpack.config.js b/applications/electron/webpack.config.js index 175d719aa..029e48333 100644 --- a/applications/electron/webpack.config.js +++ b/applications/electron/webpack.config.js @@ -5,6 +5,7 @@ // @ts-check const configs = require('./gen-webpack.config.js'); const nodeConfig = require('./gen-webpack.node.config.js'); +const TerserPlugin = require('terser-webpack-plugin'); /** * Expose bundled modules on window.theia.moduleName namespace, e.g. @@ -15,6 +16,29 @@ configs[0].module.rules.push({ loader: require.resolve('@theia/application-manager/lib/expose-loader') }); */ +/** + * Do no run TerserPlugin with parallel: true + * Each spawned node may take the full memory configured via NODE_OPTIONS / --max_old_space_size + * In total this may lead to OOM issues + */ +if (nodeConfig.config.optimization) { + nodeConfig.config.optimization.minimizer = [ + new TerserPlugin({ + parallel: false, + exclude: /^(lib|builtins)\// + }) + ]; +} +for (const config of configs) { + config.optimization = { + minimizer: [ + new TerserPlugin({ + parallel: false + }) + ] + }; +} + module.exports = [ ...configs, nodeConfig.config