diff --git a/README.md b/README.md index d74ebd1e..4d422850 100644 --- a/README.md +++ b/README.md @@ -12,8 +12,8 @@ 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) | [20250723.0.0](https://www.npmjs.com/package/google-closure-compiler/v/20250723.0.0) | 2025-07-25 | | [oxc-minify](https://github.com/oxc-project/oxc.git) | [0.78.0](https://www.npmjs.com/package/oxc-minify/v/0.78.0) | 2025-07-24 | -| [google-closure-compiler](https://github.com/git+https://github.com/google/closure-compiler-npm.git#master) | [20250721.0.0](https://www.npmjs.com/package/google-closure-compiler/v/20250721.0.0) | 2025-07-23 | | [@swc/core](https://github.com/swc-project/swc) | [1.13.2](https://www.npmjs.com/package/@swc/core/v/1.13.2) | 2025-07-22 | | [@tdewolff/minify](https://github.com/tdewolff/minify#readme) | [2.23.10](https://www.npmjs.com/package/@tdewolff/minify/v/2.23.10) | 2025-07-22 | | [esbuild](https://github.com/evanw/esbuild) | [0.25.8](https://www.npmjs.com/package/esbuild/v/0.25.8) | 2025-07-19 | @@ -24,7 +24,7 @@ This project benchmarks the following minifiers: | [tedivm/jshrink](https://github.com/tedious/JShrink) | 1.7.0 | | -_Benchmarks last updated on Jul 24, 2025._ +_Benchmarks last updated on Jul 25, 2025._
@@ -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`** | *191x* `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` | *1474x* `3,825 ms` | +| 3. [google-closure-compiler](packages/minifiers/minifiers/google-closure-compiler.ts) | -68% `22.84 kB` | -58% `8.22 kB` | *1367x* `3,550 ms` | | 4. [terser](packages/minifiers/minifiers/terser.ts) | -68% `23.05 kB` | -57% `8.26 kB` | *105x* `275 ms` | | 5. [babel-minify](packages/minifiers/minifiers/babel-minify.ts) | -67% `23.60 kB` | -56% `8.45 kB` | *249x* `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`** | *188x* `1,149 ms` | | 2. [terser](packages/minifiers/minifiers/terser.ts) | -66% `59.01 kB` | -48% `18.69 kB` | *113x* `693 ms` | | 3. [@swc/core](packages/minifiers/minifiers/swc.ts) | -66% `58.42 kB` | -48% `18.75 kB` | *5x* `31 ms` | -| 4. [google-closure-compiler](packages/minifiers/minifiers/google-closure-compiler.ts) | -66% `58.29 kB` | -48% `18.92 kB` | *626x* `3,816 ms` | +| 4. [google-closure-compiler](packages/minifiers/minifiers/google-closure-compiler.ts) | -66% `58.29 kB` | -48% `18.92 kB` | *603x* `3,674 ms` | | 5. [babel-minify](packages/minifiers/minifiers/babel-minify.ts) | -66% `59.70 kB` | -47% `19.12 kB` | *240x* `1,465 ms` | | 6. [oxc-minify](packages/minifiers/minifiers/oxc-minify.ts) | -66% `59.51 kB` | -47% `19.26 kB` | *1x* `9 ms` | | 7. [esbuild](packages/minifiers/minifiers/esbuild.ts) | -66% `59.82 kB` | -47% `19.33 kB` | *3x* `22 ms` | @@ -188,7 +188,7 @@ xychart-beta | 8. [babel-minify](packages/minifiers/minifiers/babel-minify.ts) | -68% `92.10 kB` | -62% `31.80 kB` | *302x* `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* `28 ms` | -| 11. [google-closure-compiler](packages/minifiers/minifiers/google-closure-compiler.ts) | -68% `92.73 kB` | -61% `33.09 kB` | *518x* `4,112 ms` | +| 11. [google-closure-compiler](packages/minifiers/minifiers/google-closure-compiler.ts) | -68% `92.73 kB` | -61% `33.09 kB` | *509x* `4,035 ms` | | 12. [tedivm/jshrink](packages/minifiers/minifiers/jshrink/index.ts) | -50% `144.14 kB` | -52% `40.88 kB` | *45x* `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` | *178x* `2,206 ms` | | 4. [oxc-minify](packages/minifiers/minifiers/oxc-minify.ts) | -66% `117.22 kB` | -52% `43.35 kB` | *1x* `18 ms` | | 5. [babel-minify](packages/minifiers/minifiers/babel-minify.ts) | -66% `117.90 kB` | -51% `43.93 kB` | *218x* `2,696 ms` | -| 6. [google-closure-compiler](packages/minifiers/minifiers/google-closure-compiler.ts) | -66% `115.61 kB` | -51% `44.18 kB` | *362x* `4,476 ms` | +| 6. [google-closure-compiler](packages/minifiers/minifiers/google-closure-compiler.ts) | -66% `115.61 kB` | -51% `44.18 kB` | *354x* `4,373 ms` | | 7. [@tdewolff/minify](packages/minifiers/minifiers/tdewolff-minify.ts) | -66% `117.69 kB` | -51% `44.36 kB` | **🏆 `12 ms`** | | 8. [esbuild](packages/minifiers/minifiers/esbuild.ts) | -65% `118.14 kB` | -51% `44.37 kB` | *3x* `42 ms` | | 9. [uglify-js (no compress)](packages/minifiers/minifiers/uglify-js.ts) | -63% `126.14 kB` | -50% `44.45 kB` | *29x* `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`** | *134x* `1,689 ms` | -| 2. [google-closure-compiler](packages/minifiers/minifiers/google-closure-compiler.ts) | -86% `73.50 kB` | -74% `25.02 kB` | *330x* `4,150 ms` | +| 2. [google-closure-compiler](packages/minifiers/minifiers/google-closure-compiler.ts) | -86% `73.50 kB` | -74% `25.02 kB` | *334x* `4,202 ms` | | 3. [terser](packages/minifiers/minifiers/terser.ts) | -87% `70.41 kB` | -74% `25.15 kB` | *81x* `1,028 ms` | | 4. [@swc/core](packages/minifiers/minifiers/swc.ts) | -87% `69.81 kB` | -74% `25.24 kB` | *4x* `53 ms` | | 5. [babel-minify](packages/minifiers/minifiers/babel-minify.ts) | -87% `72.37 kB` | -74% `25.50 kB` | *165x* `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` | **🏆 `33 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* `47 ms` | -| 10. [google-closure-compiler](packages/minifiers/minifiers/google-closure-compiler.ts) | -51% `270.32 kB` | -28% `94.17 kB` | *200x* `6,588 ms` | +| 10. [google-closure-compiler](packages/minifiers/minifiers/google-closure-compiler.ts) | -51% `270.32 kB` | -28% `94.17 kB` | *198x* `6,548 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` | *173x* `6,084 ms` | +| 8. [google-closure-compiler](packages/minifiers/minifiers/google-closure-compiler.ts) | **🏆-56% `439.97 kB`** | -35% `126.45 kB` | *181x* `6,360 ms` | | 9. [esbuild](packages/minifiers/minifiers/esbuild.ts) | -55% `458.89 kB` | -35% `126.71 kB` | *1x* `63 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` | *103x* `5,046 ms` | | 3. [terser](packages/minifiers/minifiers/terser.ts) | -48% `653.18 kB` | -36% `159.17 kB` | *61x* `2,985 ms` | | 4. [oxc-minify](packages/minifiers/minifiers/oxc-minify.ts) | -48% `647.00 kB` | -35% `160.83 kB` | *1x* `63 ms` | -| 5. [google-closure-compiler](packages/minifiers/minifiers/google-closure-compiler.ts) | -48% `644.52 kB` | -34% `162.77 kB` | *153x* `7,471 ms` | +| 5. [google-closure-compiler](packages/minifiers/minifiers/google-closure-compiler.ts) | -48% `644.52 kB` | -34% `162.77 kB` | *154x* `7,524 ms` | | 6. [uglify-js (no compress)](packages/minifiers/minifiers/uglify-js.ts) | -46% `674.49 kB` | -34% `163.04 kB` | *20x* `994 ms` | | 7. [terser (no compress)](packages/minifiers/minifiers/terser.ts) | -46% `675.43 kB` | -34% `163.18 kB` | *26x* `1,294 ms` | | 8. [esbuild](packages/minifiers/minifiers/esbuild.ts) | -48% `646.76 kB` | -34% `163.72 kB` | *1x* `95 ms` | @@ -559,10 +559,35 @@ xychart-beta > 🤖 This analysis is AI generated -Welcome to the thrilling JavaScript minifier showdown! It’s been an astonishing match-up of speed and size as we dissect which tool commands the ultimate balance of performance and compression for the modern dev. +And they're off! It’s been an exhilarating race through the world of JavaScript minifiers. Who came out on top? Who fell short? Let’s break down the winners, honorable mentions, and those who got lost in translation. ### Best minifier -The grand champion of this showdown is none other than **@swc/core**! With unmatched compression capabilities – consistently clinching top spots for gzip size in Round 4 (**Vue, 48%**), Round 8 (**Three.js, 64%**), and Round 11 (**Ant Design, 55%**) – it’s lightning-fast to boot. Clocking in as a speed demon on heavier files (19 ms for Smaller files and only 338 ms with **Victory, 309.44 files Art. Notably small until AntD-specific movers - Who?=BENCHMARK_TRAppsformation using largest? +The crown goes to **@swc/core**! With blazing-fast speeds, impressive compression ratios, and stellar results, it checks all the boxes for the average user. Whether you're working with small or massive libraries like "typescript" (1.88 MB), @swc/core consistently delivers compact files with unmatched processing speeds. For example, in Round 1 ("react"), it achieved a competitive 8.19 kB in just 13 ms. In Round 11 ("antd"), it shrank the file to 452.40 kB at lightning speed (845 ms). It strikes the perfect balance of efficiency and performance across all rounds. + +### Honorable mentions +Several contenders brought their A-game and deserve a special shout-out: + +1. **uglify-js**: The MVP of optimization. When you need the tightest compression (e.g., 42% in "react" or an unbeatable 87.02 kB in "d3"), it’s hard to argue with the results. However, its Achilles’ heel is speed. Clocking in at 6+ seconds for larger packages ("antd," "victory"), it’s not practical for everyone. + +2. **terser**: Tightly packed and reasonably fast, terser struck a fantastic balance. It beat uglify-js on speed by noticeable margins (e.g., "lodash" at 1,028 ms vs. uglify's 1,689 ms) while staying close in size. A great runner-up if you're not overly concerned with nanoseconds. + +3. **oxc-minify**: This sleek newcomer is worth watching! Consistently fast (as low as 9 ms for "moment") and decently competitive in size, it’s ideal for apps and devs prioritizing speed over ultra-fine compression. Its best showing was in the gigantic "typescript" round, where it achieved a whopping 860.69 kB in a swift 489 ms. + +4. **@tdewolff/minify**: The speed demon! Often claiming top marks for fastest minification (just 3 ms for "react" and "moment"), it makes quick work of most projects. That said, its compression ratios aren’t as good as @swc/core or uglify-js, especially with larger packages. Still, it’s a fantastic option for those who need results *yesterday*. + +### Eliminated +Some minifiers stumbled before the finish line. Let’s be kind as we see them off: + +1. **babel-minify**: Didn’t make it past "d3" due to a mysterious “Cannot read properties of undefined” error. Not the reliability you want in a coding companion. Avoid for now. + +2. **tedivm/jshrink**: Overwhelmed by a regular expression in "d3." While some might claim this was an overly complex case, robust handling of regex is table stakes for modern JavaScript. + +3. **bun**: Felt the heat during the massive "typescript" package and fumbled in post-validation. Incorrect whitespace handling means you can’t trust the output. Close, but no cigar. + +### Final thoughts +This race showcased some of the fastest and most effective minifiers in the game. The winners still have their quirks, but that’s what pushes boundaries! For an all-around champion, turn to **@swc/core**. Need the absolute smallest package? Harness the power of **uglify-js**. On a tight timeline? Let **@tdewolff/minify** blitz through your code. + +Congratulations to all the programmers and developers pushing boundaries in compression technology! Onward to better build systems and quicker load times! ## Sponsors diff --git a/packages/data/data/data.json b/packages/data/data/data.json index 206fed48..99669dc0 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": "20250721.0.0", + "version": "20250723.0.0", "configHash": "004f9ddc59", "result": { "data": { "minifiedBytes": 22843, "minzippedBytes": 8216, - "time": 3825.4415966, + "time": 3549.6506137999995, "runs": 5 } } @@ -210,13 +210,13 @@ }, "google-closure-compiler": { "minifierPath": "google-closure-compiler.ts", - "version": "20250721.0.0", + "version": "20250723.0.0", "configHash": "004f9ddc59", "result": { "data": { "minifiedBytes": 58293, "minzippedBytes": 18923, - "time": 3815.8813526, + "time": 3674.0816974, "runs": 5 } } @@ -465,13 +465,13 @@ }, "google-closure-compiler": { "minifierPath": "google-closure-compiler.ts", - "version": "20250721.0.0", + "version": "20250723.0.0", "configHash": "004f9ddc59", "result": { "data": { "minifiedBytes": 92729, "minzippedBytes": 33092, - "time": 4112.0334118, + "time": 4035.4988316000004, "runs": 5 } } @@ -564,13 +564,13 @@ }, "google-closure-compiler": { "minifierPath": "google-closure-compiler.ts", - "version": "20250721.0.0", + "version": "20250723.0.0", "configHash": "004f9ddc59", "result": { "data": { "minifiedBytes": 115605, "minzippedBytes": 44184, - "time": 4475.857275800001, + "time": 4372.832796, "runs": 5 } } @@ -676,13 +676,13 @@ }, "google-closure-compiler": { "minifierPath": "google-closure-compiler.ts", - "version": "20250721.0.0", + "version": "20250723.0.0", "configHash": "004f9ddc59", "result": { "data": { "minifiedBytes": 73502, "minzippedBytes": 25022, - "time": 4150.3891699999995, + "time": 4201.8722832, "runs": 5 } } @@ -944,13 +944,13 @@ }, "google-closure-compiler": { "minifierPath": "google-closure-compiler.ts", - "version": "20250721.0.0", + "version": "20250723.0.0", "configHash": "004f9ddc59", "result": { "data": { "minifiedBytes": 270317, "minzippedBytes": 94166, - "time": 6587.6959856, + "time": 6547.531393200001, "runs": 5 } } @@ -1080,13 +1080,13 @@ }, "google-closure-compiler": { "minifierPath": "google-closure-compiler.ts", - "version": "20250721.0.0", + "version": "20250723.0.0", "configHash": "004f9ddc59", "result": { "data": { "minifiedBytes": 439974, "minzippedBytes": 126454, - "time": 6083.922281600001, + "time": 6360.402524800001, "runs": 5 } } @@ -1204,13 +1204,13 @@ }, "google-closure-compiler": { "minifierPath": "google-closure-compiler.ts", - "version": "20250721.0.0", + "version": "20250723.0.0", "configHash": "004f9ddc59", "result": { "data": { "minifiedBytes": 644520, "minzippedBytes": 162771, - "time": 7471.1747524, + "time": 7523.6839486, "runs": 5 } } @@ -1430,7 +1430,7 @@ }, "google-closure-compiler": { "minifierPath": "google-closure-compiler.ts", - "version": "20250721.0.0", + "version": "20250723.0.0", "configHash": "004f9ddc59", "result": { "error": { @@ -1596,7 +1596,7 @@ }, "google-closure-compiler": { "minifierPath": "google-closure-compiler.ts", - "version": "20250721.0.0", + "version": "20250723.0.0", "configHash": "004f9ddc59", "result": { "error": { @@ -1760,7 +1760,7 @@ }, "google-closure-compiler": { "minifierPath": "google-closure-compiler.ts", - "version": "20250721.0.0", + "version": "20250723.0.0", "configHash": "004f9ddc59", "result": { "error": { @@ -1896,7 +1896,7 @@ }, "google-closure-compiler": { "minifierPath": "google-closure-compiler.ts", - "version": "20250721.0.0", + "version": "20250723.0.0", "configHash": "004f9ddc59", "result": { "error": { diff --git a/packages/minifiers/package.json b/packages/minifiers/package.json index a27d27e8..f5733cde 100644 --- a/packages/minifiers/package.json +++ b/packages/minifiers/package.json @@ -11,7 +11,7 @@ "bun": "^1.2.19", "esbuild": "^0.25.8", "find-up": "^7.0.0", - "google-closure-compiler": "^20250721.0.0", + "google-closure-compiler": "^20250723.0.0", "mem": "^9.0.2", "oxc-minify": "^0.78.0", "terser": "^5.43.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c750d84a..1c5ff440 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: ^20250721.0.0 - version: 20250721.0.0 + specifier: ^20250723.0.0 + version: 20250723.0.0 mem: specifier: ^9.0.2 version: 9.0.2 @@ -4486,57 +4486,57 @@ packages: slash: 3.0.0 dev: true - /google-closure-compiler-java@20250721.0.0: - resolution: {integrity: sha512-B8lM/RlZgjDzxXlGhwDpJo814HtMNTKEhpMBM6agxDKddMAyrNpI9/8eNeJfMP2YdLbSsSbO3kO6cIXugPRWZw==} + /google-closure-compiler-java@20250723.0.0: + resolution: {integrity: sha512-2rh97sRN59UHZWcZY+8lcUB+Msh1CzQySU06rfI7c5R7YAfovehvVxis3vRsj4OrjEhjYSuRGwRB92ao+EzBCA==} dev: false - /google-closure-compiler-linux-arm64@20250721.0.0: - resolution: {integrity: sha512-/MdZjn9p6Du0ogl4U+ViFI/7q8Xar/p/6kWNGQI/rpYUWIraQ/+6Ybt84vh+Vqx7JyX8qzPALS4oS9cE6HhNTw==} + /google-closure-compiler-linux-arm64@20250723.0.0: + resolution: {integrity: sha512-zU8gwhC0dQe7nqf/vpdYdUy677xdQ4lngCFJ0uf+j7YsMjVYymzUpIGRciHsGFQOcd0BRW9XSBE7vEsTlhq4pg==} cpu: [arm64] os: [linux] requiresBuild: true dev: false optional: true - /google-closure-compiler-linux@20250721.0.0: - resolution: {integrity: sha512-Lj2TQ/xwSodonUaSZp+l/YyjAJXHsSIg9ZVfWVGlb65iSvu64E367RDWvWAjnJOJ1013bHFHlZdnitgQ0DM9GQ==} + /google-closure-compiler-linux@20250723.0.0: + resolution: {integrity: sha512-vLrHTOYFKaMmOWa/6ToQVGKpc7fvl98f3FQZleJOkiX0Xn8b2TlpM3RMDSOR2upjhXR5ft6hsNAqUD0c5gzZkQ==} cpu: [x32, x64] os: [linux] requiresBuild: true dev: false optional: true - /google-closure-compiler-macos@20250721.0.0: - resolution: {integrity: sha512-JZiFJZVtOe9s8isJG5t4E7fiHsMYXgwvRVlCh5GYdaKgUT29TMnRcJ1KGi6/6QRg5qoiEZxWrddGnKpbWlMigQ==} + /google-closure-compiler-macos@20250723.0.0: + resolution: {integrity: sha512-3NO/3DCCiUH7USPFLuoyWDfl/LUQKIrJseZJt21zyIfV2lXryiDdNlUqyAxlLjCUkuzxIS5LBB/ycGfusP81Tw==} cpu: [arm64] os: [darwin] requiresBuild: true dev: false optional: true - /google-closure-compiler-windows@20250721.0.0: - resolution: {integrity: sha512-e+OHlheLpQqrtdJH+yZBA5vaIoHn63OnBUcMKobmcnv1saP+2wGwTpB+Gje4ap9163XdoujpDIAL7ex8KAWbKA==} + /google-closure-compiler-windows@20250723.0.0: + resolution: {integrity: sha512-Pqr0jPYlBm/ikkqgFgHWpyn6DrqoeevkXANr2esvHaM6qB2c3E2MYIdBR1sQmJR40Pt0PoJ0K7d5RanXp+8Nlg==} cpu: [x32, x64] os: [win32] requiresBuild: true dev: false optional: true - /google-closure-compiler@20250721.0.0: - resolution: {integrity: sha512-N06JuQlsXVbsxySCv0uOaQsdQbLvtvLSINEd1l2EtFFjC5Hui/P4TzHsVKQW6Kp1vAnurlQfXnojEADWvS4cFw==} + /google-closure-compiler@20250723.0.0: + resolution: {integrity: sha512-0DceELrgIM6ybGvwGKdMUdZnaEie6l5D1CEjOAirhoon3nr4rmCHRMTOAjQCuSZtgPvYvrpr/PZZJdCGwyaaUw==} engines: {node: '>=18'} hasBin: true dependencies: chalk: 5.4.1 - google-closure-compiler-java: 20250721.0.0 + google-closure-compiler-java: 20250723.0.0 minimist: 1.2.8 vinyl: 3.0.0 vinyl-sourcemaps-apply: 0.2.1 optionalDependencies: - google-closure-compiler-linux: 20250721.0.0 - google-closure-compiler-linux-arm64: 20250721.0.0 - google-closure-compiler-macos: 20250721.0.0 - google-closure-compiler-windows: 20250721.0.0 + google-closure-compiler-linux: 20250723.0.0 + google-closure-compiler-linux-arm64: 20250723.0.0 + google-closure-compiler-macos: 20250723.0.0 + google-closure-compiler-windows: 20250723.0.0 dev: false /gopd@1.0.1: