mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	Minify CSS with Lightning CSS (#25754)
Replace esbuild's rudimentary CSS minifier with [Lightning CSS](https://github.com/parcel-bundler/lightningcss), which results in around 4% smaller CSS bundle size, index.css goes from 608K to 584K. The module is quite new but has active use in the Parcel bundler, and as of yesterday is also under experimental support in Vite, so I trust it that bugs will be sorted out quickly. Before: `assets by path css/*.css 959 KiB` After: `assets by path css/*.css 933 KiB` I did give this a cursory test and everything seems to be in order.
This commit is contained in:
		
							
								
								
									
										210
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										210
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							@@ -30,6 +30,7 @@
 | 
				
			|||||||
        "jquery.are-you-sure": "1.9.0",
 | 
					        "jquery.are-you-sure": "1.9.0",
 | 
				
			||||||
        "katex": "0.16.8",
 | 
					        "katex": "0.16.8",
 | 
				
			||||||
        "license-checker-webpack-plugin": "0.2.1",
 | 
					        "license-checker-webpack-plugin": "0.2.1",
 | 
				
			||||||
 | 
					        "lightningcss-loader": "2.1.0",
 | 
				
			||||||
        "mermaid": "10.2.3",
 | 
					        "mermaid": "10.2.3",
 | 
				
			||||||
        "mini-css-extract-plugin": "2.7.6",
 | 
					        "mini-css-extract-plugin": "2.7.6",
 | 
				
			||||||
        "minimatch": "9.0.2",
 | 
					        "minimatch": "9.0.2",
 | 
				
			||||||
@@ -4010,6 +4011,17 @@
 | 
				
			|||||||
        "node": ">=6"
 | 
					        "node": ">=6"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "node_modules/detect-libc": {
 | 
				
			||||||
 | 
					      "version": "1.0.3",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==",
 | 
				
			||||||
 | 
					      "bin": {
 | 
				
			||||||
 | 
					        "detect-libc": "bin/detect-libc.js"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "engines": {
 | 
				
			||||||
 | 
					        "node": ">=0.10"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "node_modules/diff": {
 | 
					    "node_modules/diff": {
 | 
				
			||||||
      "version": "5.1.0",
 | 
					      "version": "5.1.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz",
 | 
				
			||||||
@@ -6717,6 +6729,204 @@
 | 
				
			|||||||
        "node": ">=8"
 | 
					        "node": ">=8"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "node_modules/lightningcss": {
 | 
				
			||||||
 | 
					      "version": "1.21.5",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.21.5.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-/pEUPeih2EwIx9n4T82aOG6CInN83tl/mWlw6B5gWLf36UplQi1L+5p3FUHsdt4fXVfOkkh9KIaM3owoq7ss8A==",
 | 
				
			||||||
 | 
					      "dependencies": {
 | 
				
			||||||
 | 
					        "detect-libc": "^1.0.3"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "engines": {
 | 
				
			||||||
 | 
					        "node": ">= 12.0.0"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "funding": {
 | 
				
			||||||
 | 
					        "type": "opencollective",
 | 
				
			||||||
 | 
					        "url": "https://opencollective.com/parcel"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "optionalDependencies": {
 | 
				
			||||||
 | 
					        "lightningcss-darwin-arm64": "1.21.5",
 | 
				
			||||||
 | 
					        "lightningcss-darwin-x64": "1.21.5",
 | 
				
			||||||
 | 
					        "lightningcss-linux-arm-gnueabihf": "1.21.5",
 | 
				
			||||||
 | 
					        "lightningcss-linux-arm64-gnu": "1.21.5",
 | 
				
			||||||
 | 
					        "lightningcss-linux-arm64-musl": "1.21.5",
 | 
				
			||||||
 | 
					        "lightningcss-linux-x64-gnu": "1.21.5",
 | 
				
			||||||
 | 
					        "lightningcss-linux-x64-musl": "1.21.5",
 | 
				
			||||||
 | 
					        "lightningcss-win32-x64-msvc": "1.21.5"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "node_modules/lightningcss-darwin-arm64": {
 | 
				
			||||||
 | 
					      "version": "1.21.5",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.21.5.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-z05hyLX85WY0UfhkFUOrWEFqD69lpVAmgl3aDzMKlIZJGygbhbegqb4PV8qfUrKKNBauut/qVNPKZglhTaDDxA==",
 | 
				
			||||||
 | 
					      "cpu": [
 | 
				
			||||||
 | 
					        "arm64"
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "optional": true,
 | 
				
			||||||
 | 
					      "os": [
 | 
				
			||||||
 | 
					        "darwin"
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "engines": {
 | 
				
			||||||
 | 
					        "node": ">= 12.0.0"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "funding": {
 | 
				
			||||||
 | 
					        "type": "opencollective",
 | 
				
			||||||
 | 
					        "url": "https://opencollective.com/parcel"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "node_modules/lightningcss-darwin-x64": {
 | 
				
			||||||
 | 
					      "version": "1.21.5",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.21.5.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-MSJhmej/U9MrdPxDk7+FWhO8+UqVoZUHG4VvKT5RQ4RJtqtANTiWiI97LvoVNMtdMnHaKs1Pkji6wHUFxjJsHQ==",
 | 
				
			||||||
 | 
					      "cpu": [
 | 
				
			||||||
 | 
					        "x64"
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "optional": true,
 | 
				
			||||||
 | 
					      "os": [
 | 
				
			||||||
 | 
					        "darwin"
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "engines": {
 | 
				
			||||||
 | 
					        "node": ">= 12.0.0"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "funding": {
 | 
				
			||||||
 | 
					        "type": "opencollective",
 | 
				
			||||||
 | 
					        "url": "https://opencollective.com/parcel"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "node_modules/lightningcss-linux-arm-gnueabihf": {
 | 
				
			||||||
 | 
					      "version": "1.21.5",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.21.5.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-xN6+5/JsMrbZHL1lPl+MiNJ3Xza12ueBKPepiyDCFQzlhFRTj7D0LG+cfNTzPBTO8KcYQynLpl1iBB8LGp3Xtw==",
 | 
				
			||||||
 | 
					      "cpu": [
 | 
				
			||||||
 | 
					        "arm"
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "optional": true,
 | 
				
			||||||
 | 
					      "os": [
 | 
				
			||||||
 | 
					        "linux"
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "engines": {
 | 
				
			||||||
 | 
					        "node": ">= 12.0.0"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "funding": {
 | 
				
			||||||
 | 
					        "type": "opencollective",
 | 
				
			||||||
 | 
					        "url": "https://opencollective.com/parcel"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "node_modules/lightningcss-linux-arm64-gnu": {
 | 
				
			||||||
 | 
					      "version": "1.21.5",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.21.5.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-KfzFNhC4XTbmG3ma/xcTs/IhCwieW89XALIusKmnV0N618ZDXEB0XjWOYQRCXeK9mfqPdbTBpurEHV/XZtkniQ==",
 | 
				
			||||||
 | 
					      "cpu": [
 | 
				
			||||||
 | 
					        "arm64"
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "optional": true,
 | 
				
			||||||
 | 
					      "os": [
 | 
				
			||||||
 | 
					        "linux"
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "engines": {
 | 
				
			||||||
 | 
					        "node": ">= 12.0.0"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "funding": {
 | 
				
			||||||
 | 
					        "type": "opencollective",
 | 
				
			||||||
 | 
					        "url": "https://opencollective.com/parcel"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "node_modules/lightningcss-linux-arm64-musl": {
 | 
				
			||||||
 | 
					      "version": "1.21.5",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.21.5.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-bc0GytQO5Mn9QM6szaZ+31fQHNdidgpM1sSCwzPItz8hg3wOvKl8039rU0veMJV3ZgC9z0ypNRceLrSHeRHmXw==",
 | 
				
			||||||
 | 
					      "cpu": [
 | 
				
			||||||
 | 
					        "arm64"
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "optional": true,
 | 
				
			||||||
 | 
					      "os": [
 | 
				
			||||||
 | 
					        "linux"
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "engines": {
 | 
				
			||||||
 | 
					        "node": ">= 12.0.0"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "funding": {
 | 
				
			||||||
 | 
					        "type": "opencollective",
 | 
				
			||||||
 | 
					        "url": "https://opencollective.com/parcel"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "node_modules/lightningcss-linux-x64-gnu": {
 | 
				
			||||||
 | 
					      "version": "1.21.5",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.21.5.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-JwMbgypPQgc2kW2av3OwzZ8cbrEuIiDiXPJdXRE6aVxu67yHauJawQLqJKTGUhiAhy6iLDG8Wg0a3/ziL+m+Kw==",
 | 
				
			||||||
 | 
					      "cpu": [
 | 
				
			||||||
 | 
					        "x64"
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "optional": true,
 | 
				
			||||||
 | 
					      "os": [
 | 
				
			||||||
 | 
					        "linux"
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "engines": {
 | 
				
			||||||
 | 
					        "node": ">= 12.0.0"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "funding": {
 | 
				
			||||||
 | 
					        "type": "opencollective",
 | 
				
			||||||
 | 
					        "url": "https://opencollective.com/parcel"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "node_modules/lightningcss-linux-x64-musl": {
 | 
				
			||||||
 | 
					      "version": "1.21.5",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.21.5.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-Ib8b6IQ/OR/VrPU6YBgy4T3QnuHY7DUa95O+nz+cwrTkMSN6fuHcTcIaz4t8TJ6HI5pl3uxUOZjmtls2pyQWow==",
 | 
				
			||||||
 | 
					      "cpu": [
 | 
				
			||||||
 | 
					        "x64"
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "optional": true,
 | 
				
			||||||
 | 
					      "os": [
 | 
				
			||||||
 | 
					        "linux"
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "engines": {
 | 
				
			||||||
 | 
					        "node": ">= 12.0.0"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "funding": {
 | 
				
			||||||
 | 
					        "type": "opencollective",
 | 
				
			||||||
 | 
					        "url": "https://opencollective.com/parcel"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "node_modules/lightningcss-loader": {
 | 
				
			||||||
 | 
					      "version": "2.1.0",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/lightningcss-loader/-/lightningcss-loader-2.1.0.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-mB+M/lvs/GdXT4yc8ZiNgLUAbYpPI9grDyC3ybz/Zo6s4GZv53iZnLTnkJT/Qm3Sh89dbFUm+omoHFXCfZtcXw==",
 | 
				
			||||||
 | 
					      "dependencies": {
 | 
				
			||||||
 | 
					        "browserslist": "^4.21.4",
 | 
				
			||||||
 | 
					        "lightningcss": "^1.16.0",
 | 
				
			||||||
 | 
					        "webpack-sources": "^3.2.3"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "peerDependencies": {
 | 
				
			||||||
 | 
					        "webpack": ">=5"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "node_modules/lightningcss-loader/node_modules/webpack-sources": {
 | 
				
			||||||
 | 
					      "version": "3.2.3",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
 | 
				
			||||||
 | 
					      "engines": {
 | 
				
			||||||
 | 
					        "node": ">=10.13.0"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "node_modules/lightningcss-win32-x64-msvc": {
 | 
				
			||||||
 | 
					      "version": "1.21.5",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.21.5.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-A8cSi8lUpBeVmoF+DqqW7cd0FemDbCuKr490IXdjyeI+KL8adpSKUs8tcqO0OXPh1EoDqK7JNkD/dELmd4Iz5g==",
 | 
				
			||||||
 | 
					      "cpu": [
 | 
				
			||||||
 | 
					        "x64"
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "optional": true,
 | 
				
			||||||
 | 
					      "os": [
 | 
				
			||||||
 | 
					        "win32"
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "engines": {
 | 
				
			||||||
 | 
					        "node": ">= 12.0.0"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "funding": {
 | 
				
			||||||
 | 
					        "type": "opencollective",
 | 
				
			||||||
 | 
					        "url": "https://opencollective.com/parcel"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "node_modules/lines-and-columns": {
 | 
					    "node_modules/lines-and-columns": {
 | 
				
			||||||
      "version": "1.2.4",
 | 
					      "version": "1.2.4",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,6 +29,7 @@
 | 
				
			|||||||
    "jquery.are-you-sure": "1.9.0",
 | 
					    "jquery.are-you-sure": "1.9.0",
 | 
				
			||||||
    "katex": "0.16.8",
 | 
					    "katex": "0.16.8",
 | 
				
			||||||
    "license-checker-webpack-plugin": "0.2.1",
 | 
					    "license-checker-webpack-plugin": "0.2.1",
 | 
				
			||||||
 | 
					    "lightningcss-loader": "2.1.0",
 | 
				
			||||||
    "mermaid": "10.2.3",
 | 
					    "mermaid": "10.2.3",
 | 
				
			||||||
    "mini-css-extract-plugin": "2.7.6",
 | 
					    "mini-css-extract-plugin": "2.7.6",
 | 
				
			||||||
    "minimatch": "9.0.2",
 | 
					    "minimatch": "9.0.2",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -11,6 +11,7 @@ import webpack from 'webpack';
 | 
				
			|||||||
import {fileURLToPath} from 'node:url';
 | 
					import {fileURLToPath} from 'node:url';
 | 
				
			||||||
import {readFileSync} from 'node:fs';
 | 
					import {readFileSync} from 'node:fs';
 | 
				
			||||||
import {env} from 'node:process';
 | 
					import {env} from 'node:process';
 | 
				
			||||||
 | 
					import {LightningCssMinifyPlugin} from 'lightningcss-loader';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const {EsbuildPlugin} = EsBuildLoader;
 | 
					const {EsbuildPlugin} = EsBuildLoader;
 | 
				
			||||||
const {SourceMapDevToolPlugin, DefinePlugin} = webpack;
 | 
					const {SourceMapDevToolPlugin, DefinePlugin} = webpack;
 | 
				
			||||||
@@ -96,9 +97,10 @@ export default {
 | 
				
			|||||||
      new EsbuildPlugin({
 | 
					      new EsbuildPlugin({
 | 
				
			||||||
        target: 'es2015',
 | 
					        target: 'es2015',
 | 
				
			||||||
        minify: true,
 | 
					        minify: true,
 | 
				
			||||||
        css: true,
 | 
					        css: false,
 | 
				
			||||||
        legalComments: 'none',
 | 
					        legalComments: 'none',
 | 
				
			||||||
      }),
 | 
					      }),
 | 
				
			||||||
 | 
					      new LightningCssMinifyPlugin(),
 | 
				
			||||||
    ],
 | 
					    ],
 | 
				
			||||||
    splitChunks: {
 | 
					    splitChunks: {
 | 
				
			||||||
      chunks: 'async',
 | 
					      chunks: 'async',
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user