diff --git a/cspell.json b/cspell.json index 93da3c59a..f93be0faf 100644 --- a/cspell.json +++ b/cspell.json @@ -324,6 +324,7 @@ "Tparam", "Tradeshift", "Transloadit", + "treemap", "trippable", "tsbuild", "tsep", diff --git a/scripts/build/esbuild-plugins/visualizer.js b/scripts/build/esbuild-plugins/visualizer.js index 0d66d169e..ddf51150a 100644 --- a/scripts/build/esbuild-plugins/visualizer.js +++ b/scripts/build/esbuild-plugins/visualizer.js @@ -1,5 +1,20 @@ import fs from "node:fs/promises"; import { visualizer as esbuildVisualizer } from "esbuild-visualizer/dist/plugin/index.js"; +import { renderTemplate as esbuildVisualizerRenderTemplate } from "esbuild-visualizer/dist/plugin/render-template.js"; + +/** + * @param {import("esbuild-visualizer").Metadata} metafile + * @param {{title: string, template: import("esbuild-visualizer").TemplateType}} options + */ +const getReport = async (metafile, options) => { + const data = await esbuildVisualizer(metafile); + const report = esbuildVisualizerRenderTemplate(options.template, { + title: options.title, + data, + }); + + return report; +}; export default function esbuildPluginVisualizer({ formats }) { formats = Object.fromEntries(formats.map((format) => [format, true])); @@ -32,8 +47,9 @@ export default function esbuildPluginVisualizer({ formats }) { } if (formats.html) { - const report = await esbuildVisualizer(metafile, { + const report = await getReport(metafile, { title: files[0], + template: "treemap", }); await fs.writeFile(`${esbuildConfig.outfile}.report.html`, report);