diff --git a/.changeset/olive-points-flash.md b/.changeset/olive-points-flash.md new file mode 100644 index 0000000000..64b23419de --- /dev/null +++ b/.changeset/olive-points-flash.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Switch Webpack minification to use `esbuild` instead of `terser`. diff --git a/packages/cli/package.json b/packages/cli/package.json index 3b9cf52893..3c90a11e28 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -61,7 +61,8 @@ "commander": "^6.1.0", "css-loader": "^6.5.1", "diff": "^5.0.0", - "esbuild": "^0.14.1", + "esbuild": "^0.14.10", + "esbuild-loader": "^2.18.0", "eslint": "^7.30.0", "eslint-config-prettier": "^8.3.0", "eslint-formatter-friendly": "^7.0.0", diff --git a/packages/cli/src/lib/bundler/optimization.ts b/packages/cli/src/lib/bundler/optimization.ts index 254799f78c..b2119f5b3a 100644 --- a/packages/cli/src/lib/bundler/optimization.ts +++ b/packages/cli/src/lib/bundler/optimization.ts @@ -14,10 +14,9 @@ * limitations under the License. */ -import { WebpackOptionsNormalized, WebpackPluginInstance } from 'webpack'; -import TerserPlugin from 'terser-webpack-plugin'; +import { WebpackOptionsNormalized } from 'webpack'; import { BundlingOptions } from './types'; -import { isParallelDefault } from '../parallel'; +import { ESBuildMinifyPlugin } from 'esbuild-loader'; export const optimization = ( options: BundlingOptions, @@ -26,16 +25,11 @@ export const optimization = ( return { minimize: !isDev, - // Only configure when parallel is explicitly overridden from the default - ...(!isParallelDefault(options.parallel) - ? { - minimizer: [ - new TerserPlugin({ - parallel: options.parallel, - }) as unknown as WebpackPluginInstance, - ], - } - : {}), + minimizer: [ + new ESBuildMinifyPlugin({ + target: 'es2019', + }), + ], runtimeChunk: 'single', splitChunks: { automaticNameDelimiter: '-', diff --git a/yarn.lock b/yarn.lock index a4c4bb13c6..8901f5b685 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13761,6 +13761,18 @@ esbuild-linux-s390x@0.14.10: resolved "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.10.tgz#cc4228ac842febc48b84757814bed964a619be62" integrity sha512-knArKKZm0ypIYWOWyOT7+accVwbVV1LZnl2FWWy05u9Tyv5oqJ2F5+X2Vqe/gqd61enJXQWqoufXopvG3zULOg== +esbuild-loader@^2.18.0: + version "2.18.0" + resolved "https://registry.npmjs.org/esbuild-loader/-/esbuild-loader-2.18.0.tgz#7b9548578ab954574fd94655693d22aa5ec74120" + integrity sha512-AKqxM3bI+gvGPV8o6NAhR+cBxVO8+dh+O0OXBHIXXwuSGumckbPWHzZ17subjBGI2YEGyJ1STH7Haj8aCrwL/w== + dependencies: + esbuild "^0.14.6" + joycon "^3.0.1" + json5 "^2.2.0" + loader-utils "^2.0.0" + tapable "^2.2.0" + webpack-sources "^2.2.0" + esbuild-netbsd-64@0.14.10: version "0.14.10" resolved "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.10.tgz#6ec50d9e4547a7579f447307b19f66bbedfd868b" @@ -13791,7 +13803,7 @@ esbuild-windows-arm64@0.14.10: resolved "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.10.tgz#50ab9a83f6ccf71c272e58489ecc4d7375075f32" integrity sha512-OJOyxDtabvcUYTc+O4dR0JMzLBz6G9+gXIHA7Oc5d5Fv1xiYa0nUeo8+W5s2e6ZkPRdIwOseYoL70rZz80S5BA== -esbuild@^0.14.1: +esbuild@^0.14.1, esbuild@^0.14.10, esbuild@^0.14.6: version "0.14.10" resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.14.10.tgz#10268d2b576b25ed6f8554553413988628a7767b" integrity sha512-ibZb+NwFqBwHHJlpnFMtg4aNmVK+LUtYMFC9CuKs6lDCBEvCHpqCFZFEirpqt1jOugwKGx8gALNGvX56lQyfew== @@ -18606,7 +18618,7 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" -json5@^2.1.2, json5@^2.1.3: +json5@^2.1.2, json5@^2.1.3, json5@^2.2.0: version "2.2.0" resolved "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== @@ -25902,7 +25914,7 @@ sort-keys@^4.0.0: dependencies: is-plain-obj "^2.0.0" -source-list-map@^2.0.0: +source-list-map@^2.0.0, source-list-map@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== @@ -28805,6 +28817,14 @@ webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: source-list-map "^2.0.0" source-map "~0.6.1" +webpack-sources@^2.2.0: + version "2.3.1" + resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz#570de0af163949fe272233c2cefe1b56f74511fd" + integrity sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA== + dependencies: + source-list-map "^2.0.1" + source-map "^0.6.1" + webpack-sources@^3.2.0: version "3.2.0" resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.0.tgz#b16973bcf844ebcdb3afde32eda1c04d0b90f89d"