From 857e0353ecfa37650dd02cf571303bbc96b9a13b Mon Sep 17 00:00:00 2001 From: rameel Date: Wed, 4 Mar 2026 17:58:39 +0500 Subject: [PATCH] Improve markdown table formatting in console output --- scripts/compare-package-sizes.js | 51 +++++++++++++++++++++++++------- 1 file changed, 40 insertions(+), 11 deletions(-) diff --git a/scripts/compare-package-sizes.js b/scripts/compare-package-sizes.js index 9527c76..247be7a 100644 --- a/scripts/compare-package-sizes.js +++ b/scripts/compare-package-sizes.js @@ -92,21 +92,50 @@ function has_local_origin_main() { } function generate_report(files, pr, main) { - let md = ` -### 📦 Bundle size comparison + const rows = files.map(file => { + const d = delta(pr[file].no, main[file].no); -| Name | Size | Gzip | Brotli | Δ | -|------|-----:|-----:|-------:|---| -`; + return [ + path.basename(file), + format_delta(pr[file].no, main[file].no), + format_delta(pr[file].gz, main[file].gz), + format_delta(pr[file].br, main[file].br), + icon(d) + ]; + }); + + const headers = ["Name", "Size", "Gzip", "Brotli", "Δ"]; + const all_rows = [headers, ...rows]; + const column_widths = headers.map((_, i) => Math.max(...all_rows.map(r => r[i].length))); + + function format_separator() { + return `|${column_widths.map(format_column).join("|")}|`; + + function format_column(w, i) + { + const width = w + 2; + return i === 0 + ? ":" + "-".repeat(width - 1) + : "-".repeat(width - 1) + ":"; + } + } - for (const file of files) { - const d = delta(pr[file].no, main[file].no); + function format_row(row) { + return `| ${row.map(format_column).join(" | ")} |`; + + function format_column(cell, i) { + const width = column_widths[i]; + return i === 0 ? cell.padEnd(width) : cell.padStart(width); + } + } + + let md = "\n### 📦 Bundle size comparison\n\n"; - const no_diff = format_delta(pr[file].no, main[file].no); - const gz_diff = format_delta(pr[file].gz, main[file].gz); - const br_diff = format_delta(pr[file].br, main[file].br); + md += format_row(headers) + "\n"; + md += format_separator() + "\n"; - md += `| ${path.basename(file)} | ${no_diff} | ${gz_diff} | ${br_diff} | ${icon(d)} |\n`; + for (const row of rows) { + md += format_row(row) + "\n"; } console.log(md);