diff --git a/README.md b/README.md index 7f7fafc..048d625 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ A comparison of CSS minification engines. * [clean-css](https://github.com/GoalSmashers/clean-css) * [cssnano](https://github.com/ben-eb/cssnano) * [csso](https://github.com/css/csso) +* [esbuild](https://github.com/evanw/esbuild) ### How can I see the results? diff --git a/docs/index.html b/docs/index.html index 3f6f207..0b3a9f4 100644 --- a/docs/index.html +++ b/docs/index.html @@ -20,145 +20,160 @@

CSS Minification Benchmark

File clean-css - 5.1.4 clean-css (level 2) - 5.1.4 -cssnano - 4.1.11 -cssnano (advanced) - 4.1.11 +cssnano - 5.0.7 +cssnano (advanced) - 5.0.7 csso - 4.2.0 csso (restructure off) - 4.2.0 +esbuild - 0.12.16 960.css - 9989 bytes -5772 bytes
17.36 ms -5772 bytes
16.97 ms -5772 bytes
500.07 ms -5772 bytes
152.43 ms -5768 bytes
18.7 ms -5772 bytes
8.77 ms +5772 bytes
17.98 ms +5772 bytes
14.12 ms +5772 bytes
446.67 ms +5772 bytes
136.43 ms +5768 bytes
19.11 ms +5772 bytes
9.08 ms +5773 bytes
45.66 ms animate.css - 95374 bytes -75274 bytes
107.99 ms -74510 bytes
103.65 ms -71733 bytes
171.06 ms -45497 bytes
181.84 ms -73220 bytes
85.28 ms -74520 bytes
65.99 ms +75274 bytes
87.45 ms +74510 bytes
98.94 ms +71723 bytes
179.83 ms +45487 bytes
173.64 ms +73220 bytes
87.94 ms +74520 bytes
62.23 ms +72015 bytes
5.21 ms blueprint.css - 17422 bytes -10796 bytes
18.93 ms -10646 bytes
50.07 ms -10696 bytes
76.3 ms -10696 bytes
59.73 ms -10707 bytes
38.19 ms -10790 bytes
6.32 ms +10796 bytes
18.28 ms +10646 bytes
44.19 ms +10696 bytes
79.07 ms +10696 bytes
58.96 ms +10707 bytes
38.79 ms +10790 bytes
8.21 ms +10797 bytes
1.75 ms bootstrap.css - 199412 bytes -161363 bytes
138.58 ms -159288 bytes
272.67 ms -159751 bytes
529.88 ms -145463 bytes
433.87 ms -159518 bytes
151.05 ms -161376 bytes
74.96 ms +161363 bytes
139.24 ms +159288 bytes
317.56 ms +159781 bytes
495.26 ms +146474 bytes
380.67 ms +159518 bytes
147.4 ms +161376 bytes
75.97 ms +160266 bytes
11.57 ms font-awesome-all.css - 73117 bytes -58568 bytes
22.18 ms -58568 bytes
85.35 ms -58929 bytes
128.08 ms -58563 bytes
150.28 ms -58935 bytes
64 ms -58991 bytes
16.45 ms +58568 bytes
19.48 ms +58568 bytes
86.07 ms +58929 bytes
115.51 ms +58563 bytes
131.52 ms +58935 bytes
59.74 ms +58991 bytes
11.33 ms +58795 bytes
3.86 ms foundation.css - 168014 bytes -132603 bytes
167.91 ms -125186 bytes
98.9 ms -126841 bytes
290 ms -106800 bytes
284.99 ms -124258 bytes
78.66 ms -132580 bytes
27.44 ms +132603 bytes
167.6 ms +125186 bytes
111.88 ms +126470 bytes
278.46 ms +107261 bytes
286.06 ms +124258 bytes
71.38 ms +132580 bytes
25.94 ms +128818 bytes
8.38 ms gumby.css - 167123 bytes -151481 bytes
87.88 ms -149628 bytes
90.4 ms -147887 bytes
390.21 ms -135527 bytes
355.89 ms -149640 bytes
124.94 ms -151757 bytes
31.4 ms +151481 bytes
92.07 ms +149628 bytes
93.86 ms +147887 bytes
345.1 ms +135527 bytes
332.2 ms +149640 bytes
111.2 ms +151757 bytes
40.61 ms +152946 bytes
9.43 ms inuit.css - 53050 bytes -18184 bytes
10.57 ms -17635 bytes
19.65 ms -18105 bytes
45.11 ms -17961 bytes
42.67 ms -17886 bytes
12.6 ms -18243 bytes
3.42 ms +18184 bytes
10.16 ms +17635 bytes
17.34 ms +18105 bytes
37.07 ms +17961 bytes
39.82 ms +17886 bytes
14.1 ms +18243 bytes
3.46 ms +18181 bytes
2.28 ms normalize.css - 6138 bytes -1815 bytes
0.93 ms -1742 bytes
1.85 ms -1802 bytes
7.96 ms -1802 bytes
9.99 ms -1692 bytes
1.29 ms -1816 bytes
0.49 ms +1815 bytes
0.95 ms +1742 bytes
1.86 ms +1802 bytes
6.55 ms +1802 bytes
6.33 ms +1692 bytes
1.34 ms +1816 bytes
0.41 ms +1740 bytes
0.74 ms oocss.css - 58623 bytes -14493 bytes
6.91 ms -14167 bytes
12.16 ms -14533 bytes
47.51 ms -14360 bytes
44.16 ms -14476 bytes
8.59 ms -14723 bytes
2.87 ms +14493 bytes
8.7 ms +14167 bytes
12 ms +14533 bytes
40.56 ms +14360 bytes
40.97 ms +14476 bytes
7.6 ms +14723 bytes
2.92 ms +14782 bytes
2.82 ms pure.css - 28843 bytes -16797 bytes
4.83 ms -16500 bytes
12.61 ms -16660 bytes
48.75 ms -15986 bytes
43.68 ms -16742 bytes
7.72 ms -16789 bytes
2.81 ms +16797 bytes
6.08 ms +16500 bytes
11.76 ms +16660 bytes
49.65 ms +15986 bytes
52.09 ms +16742 bytes
8.33 ms +16789 bytes
2.83 ms +16466 bytes
1.88 ms reset.css - 1092 bytes -773 bytes
0.39 ms -773 bytes
1.44 ms -773 bytes
3.64 ms -773 bytes
3.49 ms -747 bytes
2.22 ms -773 bytes
0.23 ms +773 bytes
0.41 ms +773 bytes
1.44 ms +773 bytes
3.15 ms +773 bytes
3.58 ms +747 bytes
1.26 ms +773 bytes
0.21 ms +774 bytes
0.62 ms tailwind.css - 2380419 bytes -1941820 bytes
1066.67 ms -1941515 bytes
942.15 ms -1926020 bytes
3552.75 ms -1788167 bytes
3577.83 ms -1652840 bytes
716.05 ms -1944385 bytes
314.62 ms +1941820 bytes
940.73 ms +1941515 bytes
951.46 ms +1925626 bytes
3170.82 ms +1787773 bytes
3209.66 ms +1652840 bytes
588.36 ms +1944385 bytes
313.28 ms +1961566 bytes
110.54 ms Total - 3258616 bytes -2589739 bytes
1651.13 ms -2575930 bytes
1707.87 ms -2559502 bytes
5791.32 ms -2347367 bytes
5340.85 ms -2286429 bytes
1309.29 ms -2592515 bytes
555.77 ms +2589739 bytes
1509.13 ms +2575930 bytes
1762.48 ms +2558757 bytes
5247.7 ms +2348435 bytes
4851.93 ms +2286429 bytes
1156.55 ms +2592515 bytes
556.48 ms +2602919 bytes
204.74 ms

Benchmark info:

-
Date: Thu, 29 Jul 2021 16:26:02 GMT
+      
Date: Thu, 29 Jul 2021 16:41:30 GMT
 CPU: Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz
 OS: Windows_NT x64 10.0.19043
 Node.js: v14.17.3
diff --git a/lib/minify.js b/lib/minify.js index 3768678..3a1cb59 100644 --- a/lib/minify.js +++ b/lib/minify.js @@ -6,6 +6,7 @@ const cssnano = require('cssnano'); const csso = require('csso'); const gzipSize = require('gzip-size'); const Q = require('q'); +const esbuild = require('esbuild'); // MINIFIERS const minifiers = { @@ -30,6 +31,9 @@ const minifiers = { }, 'csso (restructure off)': source => { return csso.minify(source, { restructure: false }).css; + }, + 'esbuild': source => { + return esbuild.transformSync(source, { loader: 'css', minify: true }).code; } }; diff --git a/package-lock.json b/package-lock.json index 288f17a..029648e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1356,6 +1356,12 @@ "is-symbol": "^1.0.2" } }, + "esbuild": { + "version": "0.12.16", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.16.tgz", + "integrity": "sha512-XqI9cXP2bmQ6MREIqrYBb13KfYFSERsV1+e5jSVWps8dNlLZK+hln7d0mznzDIpfISsg/AgQW0DW3kSInXWhrg==", + "dev": true + }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", diff --git a/package.json b/package.json index 793f1d3..3eaee7a 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ "cssnano": "^5.0.7", "cssnano-preset-advanced": "^5.1.3", "csso": "^4.2.0", + "esbuild": "^0.12.16", "gzip-size": "^6.0.0", "postcss": "^8.3.6", "q": "^1.5.1",