mirror of
https://github.com/thelounge/thelounge.git
synced 2026-06-11 07:04:37 -04:00
``` Webpack vs Vite Build Comparison ┌────────────┬──────────────────────┬────────────────────┬───────────────┐ │ Metric │ Webpack 5 │ Vite 8 (Rolldown) │ Change │ ├────────────┼──────────────────────┼────────────────────┼───────────────┤ │ Build time │ 1,961ms (2.96s wall) │ 612ms (0.82s wall) │ 3.2x faster │ ├────────────┼──────────────────────┼────────────────────┼───────────────┤ │ CPU time │ 11.0s user │ 1.3s user │ 8.5x less CPU │ └────────────┴──────────────────────┴────────────────────┴───────────────┘ Bundle sizes (gzipped) ┌────────────────┬─────────┬────────┬────────┐ │ Asset │ Webpack │ Vite │ Change │ ├────────────────┼─────────┼────────┼────────┤ │ App JS │ 152.6K │ 104.9K │ -31% │ ├────────────────┼─────────┼────────┼────────┤ │ Vendor JS │ 251.1K │ 81.6K │ -68% │ ├────────────────┼─────────┼────────┼────────┤ │ Runtime JS │ — │ 0.5K │ new │ ├────────────────┼─────────┼────────┼────────┤ │ Total JS │ 403.7K │ 187.0K │ -54% │ ├────────────────┼─────────┼────────┼────────┤ │ CSS │ 12.5K │ 11.9K │ -5% │ ├────────────────┼─────────┼────────┼────────┤ │ Total transfer │ 416.2K │ 198.9K │ -52% │ └────────────────┴─────────┴────────┴────────┘ Raw (uncompressed) ┌───────────────┬─────────┬──────┬────────┐ │ Asset │ Webpack │ Vite │ Change │ ├───────────────┼─────────┼──────┼────────┤ │ App JS │ 1.3M │ 304K │ -77% │ ├───────────────┼─────────┼──────┼────────┤ │ Vendor JS │ 1.1M │ 236K │ -79% │ ├───────────────┼─────────┼──────┼────────┤ │ CSS │ 64K │ 56K │ -13% │ ├───────────────┼─────────┼──────┼────────┤ │ Total public/ │ 5.1M │ 3.4M │ -33% │ └───────────────┴─────────┴──────┴────────┘ ``` --------- Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
53 lines
993 B
JavaScript
53 lines
993 B
JavaScript
"use strict";
|
|
|
|
const crypto = require("crypto");
|
|
const {execSync} = require("child_process");
|
|
const pkg = require("../package.json");
|
|
|
|
let _gitCommit;
|
|
let _gitCommitFetched = false;
|
|
|
|
function getGitCommit() {
|
|
if (_gitCommitFetched) {
|
|
return _gitCommit;
|
|
}
|
|
|
|
_gitCommitFetched = true;
|
|
|
|
try {
|
|
_gitCommit = execSync("git rev-parse --short HEAD", {
|
|
encoding: "utf-8",
|
|
timeout: 2000,
|
|
stdio: ["ignore", "pipe", "ignore"],
|
|
}).trim();
|
|
} catch {
|
|
_gitCommit = null;
|
|
}
|
|
|
|
return _gitCommit;
|
|
}
|
|
|
|
function getVersion() {
|
|
const gitCommit = getGitCommit();
|
|
const version = `v${pkg.version}`;
|
|
return gitCommit ? `source (${gitCommit} / ${version})` : version;
|
|
}
|
|
|
|
let _cacheBust;
|
|
|
|
function getVersionCacheBust() {
|
|
if (!_cacheBust) {
|
|
const hash = crypto.createHash("sha256").update(getVersion()).digest("hex");
|
|
_cacheBust = hash.substring(0, 10);
|
|
}
|
|
|
|
return _cacheBust;
|
|
}
|
|
|
|
module.exports = {
|
|
getVersion,
|
|
getVersionNumber: () => pkg.version,
|
|
getVersionCacheBust,
|
|
getGitCommit,
|
|
};
|