From 672bb813c1842491828ee3f897e5b9ca0d88b468 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 21 Jun 2025 14:02:29 +0000 Subject: [PATCH 1/2] fix(deps): update dependency google-closure-compiler to v20250619 --- packages/minifiers/package.json | 2 +- pnpm-lock.yaml | 38 ++++++++++++++++----------------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/packages/minifiers/package.json b/packages/minifiers/package.json index e20ed0f3..a9c434f1 100644 --- a/packages/minifiers/package.json +++ b/packages/minifiers/package.json @@ -11,7 +11,7 @@ "bun": "^1.2.17", "esbuild": "^0.25.5", "find-up": "^7.0.0", - "google-closure-compiler": "^20250615.0.0", + "google-closure-compiler": "^20250619.0.0", "mem": "^9.0.2", "oxc-minify": "^0.73.2", "terser": "^5.43.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 23c83f2c..a4e6a18f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -216,8 +216,8 @@ importers: specifier: ^7.0.0 version: 7.0.0 google-closure-compiler: - specifier: ^20250615.0.0 - version: 20250615.0.0 + specifier: ^20250619.0.0 + version: 20250619.0.0 mem: specifier: ^9.0.2 version: 9.0.2 @@ -4465,57 +4465,57 @@ packages: slash: 3.0.0 dev: true - /google-closure-compiler-java@20250615.0.0: - resolution: {integrity: sha512-gkhCusRw29Q96waXg/grUCg0hg/XQyL6bOtOAAdeiHjjubOpDqR+oHxMQpIUQgAEfK5SIcV0AghajEbAMhU2cw==} + /google-closure-compiler-java@20250619.0.0: + resolution: {integrity: sha512-D6VYnHPkaozbeQd5Z8flP0DL/lQ+CBSchyUrdUY+IRgP/F9xuNsOthPHOeNQs1RNdnnq+S5hjYhId9h5MDKbfw==} dev: false - /google-closure-compiler-linux-arm64@20250615.0.0: - resolution: {integrity: sha512-7GCB2aFzf0HITf+3MoKZvvNysaJmJL7u9/3D9RAUW3lZWJMx1rwNcrGw7UxsfW6XbmKhEHRtraxiizWfQBLAQQ==} + /google-closure-compiler-linux-arm64@20250619.0.0: + resolution: {integrity: sha512-zqZC9W4legjaZ1gp+XjGdL5HdxPYRwsvZ43zpJ+HCjTll0wWSonK09qlfxpBLZ2iiUvSqrimiVCv2PU8h2Nzbw==} cpu: [arm64] os: [linux] requiresBuild: true dev: false optional: true - /google-closure-compiler-linux@20250615.0.0: - resolution: {integrity: sha512-WyfNTFto0GM010doY1hNptC+OBtNlFhzdLWTSm1CQ+C8HO/KyoWlfuwfQCthPFqe7pnpnNd1sCe8fznAqy5syQ==} + /google-closure-compiler-linux@20250619.0.0: + resolution: {integrity: sha512-rTMNG2U97CHdqNOldDDNFtdVkkzEjjAEtaDtO2PjqVQ6C9MxB4wgqVe5lHM6JRXywoIkKvjGaTI4ZT0ReP1W9A==} cpu: [x32, x64] os: [linux] requiresBuild: true dev: false optional: true - /google-closure-compiler-macos@20250615.0.0: - resolution: {integrity: sha512-eLm67XKEMWbSP9rUBI2lEeGrUFqEAbD4+n2bDhNiY8ljCWYiBBlm1WaylGQxMlxdmLNuQIfS5F7utLBSFnlVvA==} + /google-closure-compiler-macos@20250619.0.0: + resolution: {integrity: sha512-b3qitFooB/cgaBYhu58+Q1v4V4+M51bia3WEVpV9i7AqN/qMsjMQo8C9179doSyKj2h98pX57iAIPmeDwsMKZA==} cpu: [arm64] os: [darwin] requiresBuild: true dev: false optional: true - /google-closure-compiler-windows@20250615.0.0: - resolution: {integrity: sha512-jeeWwwRv+dvlPgFxGnW6zeO2kmWgN6/ajZjgw/3gfrf+KXV0oxjoGnWpY0/2C7H285f8b9Y3r5bDxgxyBL/GPw==} + /google-closure-compiler-windows@20250619.0.0: + resolution: {integrity: sha512-ON9E897UFgfgYMx+CgnHJNyrB1OUtOEVJhoOYkTrTLE47Nm1QRQ6wc9AqYTA8kReUmmWE+zmG7Mn4M5WwRsEQw==} cpu: [x32, x64] os: [win32] requiresBuild: true dev: false optional: true - /google-closure-compiler@20250615.0.0: - resolution: {integrity: sha512-/n5+KKP2rOrlqFsivJDaOFEIkED9/yIinCd37f3BZm5KqoS2ijxLWHC0KOCx/Wodm82X8rPkoZIzTpInCwlN6w==} + /google-closure-compiler@20250619.0.0: + resolution: {integrity: sha512-Kfs3zGpvoDadX6xpL/mCNOL8Tcd/dCLhRfUP5bWN/mCLdpAnGM0xn7N2wrtBhE4VulX89Ao+gx6Puz8qpUqvsQ==} engines: {node: '>=18'} hasBin: true dependencies: chalk: 5.4.1 - google-closure-compiler-java: 20250615.0.0 + google-closure-compiler-java: 20250619.0.0 minimist: 1.2.8 vinyl: 3.0.0 vinyl-sourcemaps-apply: 0.2.1 optionalDependencies: - google-closure-compiler-linux: 20250615.0.0 - google-closure-compiler-linux-arm64: 20250615.0.0 - google-closure-compiler-macos: 20250615.0.0 - google-closure-compiler-windows: 20250615.0.0 + google-closure-compiler-linux: 20250619.0.0 + google-closure-compiler-linux-arm64: 20250619.0.0 + google-closure-compiler-macos: 20250619.0.0 + google-closure-compiler-windows: 20250619.0.0 dev: false /gopd@1.0.1: From a2ad7fa1a69ee3c05f186987d50ff4d4a57285d7 Mon Sep 17 00:00:00 2001 From: GitHub Date: Sat, 21 Jun 2025 14:09:21 +0000 Subject: [PATCH 2/2] chore: updated benchmarks --- README.md | 56 ++++++++++++++++++------------------ packages/data/data/data.json | 40 +++++++++++++------------- 2 files changed, 48 insertions(+), 48 deletions(-) diff --git a/README.md b/README.md index 0471efa0..e7c14c51 100644 --- a/README.md +++ b/README.md @@ -12,11 +12,11 @@ This project benchmarks the following minifiers: | Minifier | Version | Release date ↓ | | ----------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ | -------------- | +| [google-closure-compiler](https://github.com/git+https://github.com/google/closure-compiler-npm.git#master) | [20250619.0.0](https://www.npmjs.com/package/google-closure-compiler/v/20250619.0.0) | 2025-06-21 | | [bun](https://github.com/oven-sh/bun) | [1.2.17](https://www.npmjs.com/package/bun/v/1.2.17) | 2025-06-21 | | [@swc/core](https://github.com/swc-project/swc) | [1.12.5](https://www.npmjs.com/package/@swc/core/v/1.12.5) | 2025-06-21 | | [terser](https://github.com/terser/terser) | [5.43.1](https://www.npmjs.com/package/terser/v/5.43.1) | 2025-06-19 | | [oxc-minify](https://github.com/oxc-project/oxc.git) | [0.73.2](https://www.npmjs.com/package/oxc-minify/v/0.73.2) | 2025-06-18 | -| [google-closure-compiler](https://github.com/git+https://github.com/google/closure-compiler-npm.git#master) | [20250615.0.0](https://www.npmjs.com/package/google-closure-compiler/v/20250615.0.0) | 2025-06-17 | | [esbuild](https://github.com/evanw/esbuild) | [0.25.5](https://www.npmjs.com/package/esbuild/v/0.25.5) | 2025-05-27 | | [@tdewolff/minify](https://github.com/tdewolff/minify#readme) | [2.23.8](https://www.npmjs.com/package/@tdewolff/minify/v/2.23.8) | 2025-05-21 | | [uglify-js](https://github.com/mishoo/UglifyJS) | [3.19.3](https://www.npmjs.com/package/uglify-js/v/3.19.3) | 2024-08-29 | @@ -100,7 +100,7 @@ xychart-beta | **Minifier** | **Minified size** | **Minzipped size** | **Time** | | 1. [uglify-js](packages/minifiers/minifiers/uglify-js.ts) | **🏆-69% `22.64 kB`** | **🏆-58% `8.18 kB`** | *189x* `497 ms` | | 2. [@swc/core](packages/minifiers/minifiers/swc.ts) | -68% `22.81 kB` | -58% `8.19 kB` | *4x* `13 ms` | -| 3. [google-closure-compiler](packages/minifiers/minifiers/google-closure-compiler.ts) | -68% `22.84 kB` | -58% `8.22 kB` | *1582x* `4,156 ms` | +| 3. [google-closure-compiler](packages/minifiers/minifiers/google-closure-compiler.ts) | -68% `22.84 kB` | -58% `8.22 kB` | *1361x* `3,577 ms` | | 4. [terser](packages/minifiers/minifiers/terser.ts) | -68% `23.05 kB` | -57% `8.26 kB` | *104x* `275 ms` | | 5. [babel-minify](packages/minifiers/minifiers/babel-minify.ts) | -67% `23.60 kB` | -56% `8.45 kB` | *246x* `647 ms` | | 6. [oxc-minify](packages/minifiers/minifiers/oxc-minify.ts) | -67% `23.52 kB` | -56% `8.49 kB` | *1x* `3 ms` | @@ -141,7 +141,7 @@ xychart-beta | 1. [uglify-js](packages/minifiers/minifiers/uglify-js.ts) | **🏆-67% `57.73 kB`** | **🏆-49% `18.57 kB`** | *206x* `1,149 ms` | | 2. [terser](packages/minifiers/minifiers/terser.ts) | -66% `59.01 kB` | -48% `18.69 kB` | *124x* `693 ms` | | 3. [@swc/core](packages/minifiers/minifiers/swc.ts) | -66% `58.42 kB` | -48% `18.75 kB` | *6x* `34 ms` | -| 4. [google-closure-compiler](packages/minifiers/minifiers/google-closure-compiler.ts) | -66% `58.29 kB` | -48% `18.92 kB` | *661x* `3,688 ms` | +| 4. [google-closure-compiler](packages/minifiers/minifiers/google-closure-compiler.ts) | -66% `58.29 kB` | -48% `18.92 kB` | *661x* `3,685 ms` | | 5. [babel-minify](packages/minifiers/minifiers/babel-minify.ts) | -66% `59.70 kB` | -47% `19.12 kB` | *262x* `1,465 ms` | | 6. [oxc-minify](packages/minifiers/minifiers/oxc-minify.ts) | -66% `59.52 kB` | -47% `19.26 kB` | *1x* `8 ms` | | 7. [esbuild](packages/minifiers/minifiers/esbuild.ts) | -66% `59.82 kB` | -47% `19.33 kB` | *3x* `21 ms` | @@ -188,7 +188,7 @@ xychart-beta | 8. [babel-minify](packages/minifiers/minifiers/babel-minify.ts) | -68% `92.10 kB` | -62% `31.80 kB` | *304x* `2,398 ms` | | 9. [esbuild](packages/minifiers/minifiers/esbuild.ts) | -69% `90.07 kB` | -62% `31.95 kB` | *4x* `36 ms` | | 10. [bun](packages/minifiers/minifiers/bun.ts) | -68% `92.55 kB` | -61% `32.65 kB` | *3x* `29 ms` | -| 11. [google-closure-compiler](packages/minifiers/minifiers/google-closure-compiler.ts) | -68% `92.73 kB` | -61% `33.09 kB` | *503x* `3,965 ms` | +| 11. [google-closure-compiler](packages/minifiers/minifiers/google-closure-compiler.ts) | -68% `92.73 kB` | -61% `33.09 kB` | *515x* `4,056 ms` | | 12. [tedivm/jshrink](packages/minifiers/minifiers/jshrink/index.ts) | -50% `144.14 kB` | -52% `40.88 kB` | *46x* `363 ms` | @@ -223,7 +223,7 @@ xychart-beta | 3. [uglify-js](packages/minifiers/minifiers/uglify-js.ts) | **🏆-67% `113.80 kB`** | -52% `43.04 kB` | *168x* `2,206 ms` | | 4. [oxc-minify](packages/minifiers/minifiers/oxc-minify.ts) | -66% `117.25 kB` | -52% `43.36 kB` | *1x* `16 ms` | | 5. [babel-minify](packages/minifiers/minifiers/babel-minify.ts) | -66% `117.90 kB` | -51% `43.93 kB` | *206x* `2,696 ms` | -| 6. [google-closure-compiler](packages/minifiers/minifiers/google-closure-compiler.ts) | -66% `115.61 kB` | -51% `44.18 kB` | *343x* `4,489 ms` | +| 6. [google-closure-compiler](packages/minifiers/minifiers/google-closure-compiler.ts) | -66% `115.61 kB` | -51% `44.18 kB` | *350x* `4,579 ms` | | 7. [@tdewolff/minify](packages/minifiers/minifiers/tdewolff-minify.ts) | -66% `117.69 kB` | -51% `44.36 kB` | **🏆 `13 ms`** | | 8. [esbuild](packages/minifiers/minifiers/esbuild.ts) | -65% `118.14 kB` | -51% `44.37 kB` | *3x* `43 ms` | | 9. [uglify-js (no compress)](packages/minifiers/minifiers/uglify-js.ts) | -63% `126.14 kB` | -50% `44.45 kB` | *27x* `364 ms` | @@ -259,7 +259,7 @@ xychart-beta | [lodash v4.17.21](https://www.npmjs.com/package/lodash/v/4.17.21) ([Source](https://unpkg.com/lodash@4.17.21/lodash.js)) | `544.09 kB` | `96.69 kB` | | | **Minifier** | **Minified size** | **Minzipped size** | **Time** | | 1. [uglify-js](packages/minifiers/minifiers/uglify-js.ts) | **🏆-87% `68.17 kB`** | **🏆-74% `24.69 kB`** | *147x* `1,689 ms` | -| 2. [google-closure-compiler](packages/minifiers/minifiers/google-closure-compiler.ts) | -86% `73.50 kB` | -74% `25.02 kB` | *381x* `4,358 ms` | +| 2. [google-closure-compiler](packages/minifiers/minifiers/google-closure-compiler.ts) | -86% `73.50 kB` | -74% `25.02 kB` | *365x* `4,174 ms` | | 3. [terser](packages/minifiers/minifiers/terser.ts) | -87% `70.41 kB` | -74% `25.15 kB` | *90x* `1,028 ms` | | 4. [@swc/core](packages/minifiers/minifiers/swc.ts) | -87% `69.82 kB` | -74% `25.24 kB` | *4x* `57 ms` | | 5. [babel-minify](packages/minifiers/minifiers/babel-minify.ts) | -87% `72.37 kB` | -74% `25.50 kB` | *182x* `2,083 ms` | @@ -307,7 +307,7 @@ xychart-beta | 7. [@tdewolff/minify](packages/minifiers/minifiers/tdewolff-minify.ts) | -52% `269.35 kB` | -31% `89.88 kB` | **🏆 `32 ms`** | | 8. [esbuild](packages/minifiers/minifiers/esbuild.ts) | -51% `270.13 kB` | -31% `90.80 kB` | *2x* `69 ms` | | 9. [bun](packages/minifiers/minifiers/bun.ts) | -51% `273.41 kB` | -29% `92.40 kB` | *1x* `49 ms` | -| 10. [google-closure-compiler](packages/minifiers/minifiers/google-closure-compiler.ts) | -51% `270.32 kB` | -28% `94.17 kB` | *207x* `6,733 ms` | +| 10. [google-closure-compiler](packages/minifiers/minifiers/google-closure-compiler.ts) | -51% `270.32 kB` | -28% `94.17 kB` | *220x* `7,151 ms` | | 11. [babel-minify](packages/minifiers/minifiers/babel-minify.ts) ❌ Minification | ❌ | ❌ | - | | 12. [tedivm/jshrink](packages/minifiers/minifiers/jshrink/index.ts) ❌ Minification | ❌ | ❌ | - | @@ -345,7 +345,7 @@ xychart-beta | 5. [terser (no compress)](packages/minifiers/minifiers/terser.ts) | -53% `472.58 kB` | -36% `124.25 kB` | *27x* `966 ms` | | 6. [uglify-js (no compress)](packages/minifiers/minifiers/uglify-js.ts) | -53% `472.16 kB` | -36% `124.61 kB` | *22x* `778 ms` | | 7. [@tdewolff/minify](packages/minifiers/minifiers/tdewolff-minify.ts) | -55% `456.59 kB` | -36% `124.89 kB` | **🏆 `35 ms`** | -| 8. [google-closure-compiler](packages/minifiers/minifiers/google-closure-compiler.ts) | **🏆-56% `439.97 kB`** | -35% `126.45 kB` | *175x* `6,116 ms` | +| 8. [google-closure-compiler](packages/minifiers/minifiers/google-closure-compiler.ts) | **🏆-56% `439.97 kB`** | -35% `126.45 kB` | *181x* `6,294 ms` | | 9. [esbuild](packages/minifiers/minifiers/esbuild.ts) | -55% `458.89 kB` | -35% `126.71 kB` | *1x* `60 ms` | | 10. [bun](packages/minifiers/minifiers/bun.ts) | -54% `466.80 kB` | -34% `127.65 kB` | *1x* `42 ms` | | 11. [tedivm/jshrink](packages/minifiers/minifiers/jshrink/index.ts) | -37% `633.71 kB` | -25% `145.18 kB` | *38x* `1,341 ms` | @@ -382,7 +382,7 @@ xychart-beta | 2. [uglify-js](packages/minifiers/minifiers/uglify-js.ts) | **🏆-49% `641.59 kB`** | -36% `159.07 kB` | *101x* `5,046 ms` | | 3. [terser](packages/minifiers/minifiers/terser.ts) | -48% `653.18 kB` | -36% `159.17 kB` | *59x* `2,985 ms` | | 4. [oxc-minify](packages/minifiers/minifiers/oxc-minify.ts) | -48% `647.00 kB` | -35% `160.83 kB` | *1x* `57 ms` | -| 5. [google-closure-compiler](packages/minifiers/minifiers/google-closure-compiler.ts) | -48% `644.52 kB` | -34% `162.77 kB` | *159x* `7,958 ms` | +| 5. [google-closure-compiler](packages/minifiers/minifiers/google-closure-compiler.ts) | -48% `644.52 kB` | -34% `162.77 kB` | *156x* `7,795 ms` | | 6. [uglify-js (no compress)](packages/minifiers/minifiers/uglify-js.ts) | -46% `674.49 kB` | -34% `163.04 kB` | *19x* `994 ms` | | 7. [terser (no compress)](packages/minifiers/minifiers/terser.ts) | -46% `675.43 kB` | -34% `163.18 kB` | *25x* `1,294 ms` | | 8. [esbuild](packages/minifiers/minifiers/esbuild.ts) | -48% `646.76 kB` | -34% `163.73 kB` | *1x* `89 ms` | @@ -559,35 +559,35 @@ xychart-beta > 🤖 This analysis is AI generated -The results are in, and what an electrifying race it’s been! The battlefield of JavaScript minifiers was fought with kilobytes, milliseconds, and plenty of head-to-head showdowns. Let’s break down the champions, the honorable competitors, and those who had to leave the arena. +This was one epic standoff of the JavaScript minifiers, and folks, we’ve got plenty to unpack! Each challenger came in ready to squeeze every last byte out of the heaviest hitters in npm. Let’s dive into the results of this thrilling race and crown a champ! -### Best minifier -**@swc/core** emerges as the clear leader! It dazzles with the perfect balance between compression and speed in the majority of scenarios. Consistently squeezing files down to some of the smallest sizes while completing tasks at warp speed, this contender is robust, reliable, and outrageously fast. Whether it’s the relatively small “react” package or a gigantic behemoth like “antd” or “typescript,” it trumps the field on size while staying nimble. +### Best Minifier +**@swc/core takes the crown!** It carved through code like butter, delivering the perfect blend of exceptional gzip savings and blistering speed. For packages such as `react`, `vue`, and even the colossal beasts like `antd` and `echarts`, @swc/core consistently dominated either as the smallest or one of the smallest gzip sizes while staying one of the quickest overall. It’s not just fast—it’s *extremely fast*, clocking in at 50-70x faster than behemoths like `uglify-js` in some cases. If you need a reliable all-rounder to minimize load time and process thousands of lines of code in a blink, look no further. -### Honorable mentions -Some standout minifiers didn’t win the top overall prize but deserve big props for their specialties: +### Honorable Mentions +1. **Uglify-js** + The reigning heavyweight of the past still has plenty to flex! It often achieved the smallest gzip sizes, especially in more compressible packages like `lodash` (26%) and `d3` (67%), but its painfully slow performance (several seconds in some rounds!) held it back. For the absolute smallest files—if you're okay waiting—this one’s still a champ. -1. **Uglify-js:** The master of deep compression! On packages like "lodash" and "d3," this minifier delivered incredibly small outputs, frequently ranking first in size. However, its achingly slow processing times (often running several seconds on bigger files) kept it from securing the top recommendation. +2. **Terser** + A top contender for compression size in most cases (hitting 51-55% savings), Terser struck a strong balance between speed and compression. That said, with performance often lagging (usually 1-5 seconds per package), it’s slightly overshadowed by faster competitors like @swc/core. -2. **oxc-minify:** A rising star! This minifier achieves excellent compression at lightning speeds, consistently coming in just fractions of a kilobyte behind the leaders. On massive packages like “typescript” and “antd,” its near-instant performance makes it one to watch for performance-oriented users. +3. **OXC-minify** + A rising star in minifier efficiency! Despite not always being the smallest (save for Round 7’s `terser`), OXC-minify blazed through these files, dissecting massive libraries like `antd` (56% in 188ms) and `lodash` (27% in just 11ms) with speed rivaling @swc/core. This is a compelling option for those prioritizing speed. -3. **Terser:** Another stellar performer, frequently landing near the top in compression ratios and striking a great balance. It couldn’t quite outpace @swc/core or oxc-minify overall but remains a solid choice, especially for developers already familiar with its ecosystem. - -4. **@tdewolff/minify:** The Usain Bolt of the competition! This speed demon completed every race in record time and delivered respectable compression to boot. While it didn’t take top honors for size, its blazing speed makes it the best choice for those who just need “good enough” compression instantly. +4. **@tdewolff/minify** + Holy moly—this minifier is the Usain Bolt of the race! It dominated as the fastest option in nearly every round, sometimes finishing in just *3 milliseconds*. While its gzip compression was generally respectable (hovering around 45-57%), others like @swc/core and OXC-minify outperformed it in size savings for the largest libraries. Still, for blazing speed and lightweight use-cases, this is a contender worth eyeing. ### Eliminated -Some competitors, sadly, didn’t make the cut. These minifiers struggled under the pressure or faltered during the race. Use them with caution (if at all): - -1. **babel-minify**: Ran into a fatal error processing “d3,” making it unreliable for production code. It’s a shame, as its speed held promise. - -2. **tedivm/jshrink**: Choked on a regex pattern during “d3” minification. It couldn’t stay technique-perfect in the heat of the race. +1. **Babel-minify** + The first to crash and burn! It stumbled on "d3" with a runtime error, leaving it unfit for this battle. Given its lack of updates and instability, this one is best left in retirement. -3. **bun**: Collapsed during post-validation of “typescript,” producing invalid output. For now, this one needs a pit crew’s attention before it’s back in contention. +2. **tedivm/jshrink** + Another crash victim, tedivm/jshrink tripped over a regex and got disqualified in "d3". For anything more complex than extremely basic minification, it’s unlikely to hold up. -### Final thoughts -What a thrilling showcase of compression and speed! @swc/core takes the championship crown as the best all-around choice for its consistent excellence. Uglify-js wins for users needing the absolute smallest gzip sizes but who can afford to wait. Meanwhile, oxc-minify and @tdewolff/minify shine as the speed-forward champions. +3. **Bun** + The wildcard here misstepped during post-validation on a minor formatting mismatch. Promising but immature, it still has some growing up to do before it excels as a production-grade minifier. -Congrats to all the contenders on their impressive performances. Time to pick your minifier and keep your bundles lean and mean! +This has been an eye-popping performance by all top contenders, showing just how far JavaScript minifiers have evolved to juggle size, speed, and scale. While @swc/core claims the throne by a comfortable margin today, legends like uglify-js, upstarts like oxc-minify, and sprinters like @tdewolff/minify keep things interesting. Buckle up for the next showdown—it’s only getting better from here! ## Sponsors diff --git a/packages/data/data/data.json b/packages/data/data/data.json index c04b37a7..262d3c6f 100644 --- a/packages/data/data/data.json +++ b/packages/data/data/data.json @@ -33,13 +33,13 @@ }, "google-closure-compiler": { "minifierPath": "google-closure-compiler.ts", - "version": "20250615.0.0", + "version": "20250619.0.0", "configHash": "004f9ddc59", "result": { "data": { "minifiedBytes": 22843, "minzippedBytes": 8216, - "time": 4156.106963800001, + "time": 3576.6457588000003, "runs": 5 } } @@ -210,13 +210,13 @@ }, "google-closure-compiler": { "minifierPath": "google-closure-compiler.ts", - "version": "20250615.0.0", + "version": "20250619.0.0", "configHash": "004f9ddc59", "result": { "data": { "minifiedBytes": 58293, "minzippedBytes": 18923, - "time": 3687.6926736, + "time": 3684.9771892000003, "runs": 5 } } @@ -465,13 +465,13 @@ }, "google-closure-compiler": { "minifierPath": "google-closure-compiler.ts", - "version": "20250615.0.0", + "version": "20250619.0.0", "configHash": "004f9ddc59", "result": { "data": { "minifiedBytes": 92729, "minzippedBytes": 33092, - "time": 3964.7793408000007, + "time": 4055.8055846, "runs": 5 } } @@ -564,13 +564,13 @@ }, "google-closure-compiler": { "minifierPath": "google-closure-compiler.ts", - "version": "20250615.0.0", + "version": "20250619.0.0", "configHash": "004f9ddc59", "result": { "data": { "minifiedBytes": 115605, "minzippedBytes": 44184, - "time": 4489.15129, + "time": 4578.677164, "runs": 5 } } @@ -676,13 +676,13 @@ }, "google-closure-compiler": { "minifierPath": "google-closure-compiler.ts", - "version": "20250615.0.0", + "version": "20250619.0.0", "configHash": "004f9ddc59", "result": { "data": { "minifiedBytes": 73502, "minzippedBytes": 25022, - "time": 4357.6475064, + "time": 4174.0919922, "runs": 5 } } @@ -944,13 +944,13 @@ }, "google-closure-compiler": { "minifierPath": "google-closure-compiler.ts", - "version": "20250615.0.0", + "version": "20250619.0.0", "configHash": "004f9ddc59", "result": { "data": { "minifiedBytes": 270317, "minzippedBytes": 94166, - "time": 6733.403639600001, + "time": 7150.5026514, "runs": 5 } } @@ -1080,13 +1080,13 @@ }, "google-closure-compiler": { "minifierPath": "google-closure-compiler.ts", - "version": "20250615.0.0", + "version": "20250619.0.0", "configHash": "004f9ddc59", "result": { "data": { "minifiedBytes": 439974, "minzippedBytes": 126454, - "time": 6115.646089599999, + "time": 6294.17317, "runs": 5 } } @@ -1204,13 +1204,13 @@ }, "google-closure-compiler": { "minifierPath": "google-closure-compiler.ts", - "version": "20250615.0.0", + "version": "20250619.0.0", "configHash": "004f9ddc59", "result": { "data": { "minifiedBytes": 644520, "minzippedBytes": 162771, - "time": 7957.9711398, + "time": 7794.6931652, "runs": 5 } } @@ -1430,7 +1430,7 @@ }, "google-closure-compiler": { "minifierPath": "google-closure-compiler.ts", - "version": "20250615.0.0", + "version": "20250619.0.0", "configHash": "004f9ddc59", "result": { "error": { @@ -1596,7 +1596,7 @@ }, "google-closure-compiler": { "minifierPath": "google-closure-compiler.ts", - "version": "20250615.0.0", + "version": "20250619.0.0", "configHash": "004f9ddc59", "result": { "error": { @@ -1760,7 +1760,7 @@ }, "google-closure-compiler": { "minifierPath": "google-closure-compiler.ts", - "version": "20250615.0.0", + "version": "20250619.0.0", "configHash": "004f9ddc59", "result": { "error": { @@ -1896,7 +1896,7 @@ }, "google-closure-compiler": { "minifierPath": "google-closure-compiler.ts", - "version": "20250615.0.0", + "version": "20250619.0.0", "configHash": "004f9ddc59", "result": { "error": {