From 49ccbe1b9e69d124bbe29c3a029dd58eed04fb08 Mon Sep 17 00:00:00 2001 From: Jim Vomero Date: Fri, 12 Sep 2025 12:55:17 -0400 Subject: [PATCH] fix(EMULSIF-57): preserve variables in JS minification --- config/babel.config.js | 12 +++++++++++- config/webpack/optimizers.js | 11 ++++++++++- config/webpack/webpack.common.js | 4 ++++ package.json | 1 + 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/config/babel.config.js b/config/babel.config.js index 5ef7c85..6e040d9 100644 --- a/config/babel.config.js +++ b/config/babel.config.js @@ -1,7 +1,17 @@ export default (api) => { api.cache(true); - const presets = [['minify', { builtIns: false }]]; + const presets = [ + [ + 'minify', + { + builtIns: false, + mangle: { + reserved: ['Drupal', 'drupalSettings', 'once'], + }, + }, + ], + ]; const comments = false; return { presets, comments }; diff --git a/config/webpack/optimizers.js b/config/webpack/optimizers.js index e8b5462..f620516 100644 --- a/config/webpack/optimizers.js +++ b/config/webpack/optimizers.js @@ -1,4 +1,5 @@ import ImageMinimizerPlugin from 'image-minimizer-webpack-plugin'; +import TerserPlugin from 'terser-webpack-plugin'; const ImageMinimizer = new ImageMinimizerPlugin({ minimizer: { @@ -12,6 +13,14 @@ const ImageMinimizer = new ImageMinimizerPlugin({ }, }); +const TerserMinimizer = new TerserPlugin({ + terserOptions: { + mangle: { + reserved: ['Drupal', 'drupalSettings', 'once'], + }, + }, +}); + export default { - minimizer: [ImageMinimizer], + minimizer: [ImageMinimizer, TerserMinimizer], }; diff --git a/config/webpack/webpack.common.js b/config/webpack/webpack.common.js index 44c2fff..e28da8b 100644 --- a/config/webpack/webpack.common.js +++ b/config/webpack/webpack.common.js @@ -230,6 +230,10 @@ const buildEntries = () => { export default { target: 'web', stats: { errorDetails: true }, + externals: { + drupal: 'Drupal', + drupalSettings: 'drupalSettings', + }, entry: buildEntries(), module: { rules: [ diff --git a/package.json b/package.json index 8fefc39..a640556 100644 --- a/package.json +++ b/package.json @@ -117,6 +117,7 @@ "stylelint-selector-bem-pattern": "^4.0.1", "stylelint-webpack-plugin": "^5.0.1", "svg-spritemap-webpack-plugin": "^5.0.1", + "terser-webpack-plugin": "^5.3.9", "token-transformer": "^0.0.33", "twig-drupal-filters": "^3.2.0", "twig-testing-library": "^1.2.0",