From 9f4cda65d5bd6d1c992264aa1800c2dfecd61a14 Mon Sep 17 00:00:00 2001 From: Jelle van der Waa Date: Wed, 26 Jun 2024 10:55:36 +0200 Subject: [PATCH] build.js: support outputting esbuild metadata file ESbuild supports outputting a metadata file which can be used to view bundle size information using https://esbuild.github.io/analyze/ Closes: #18267 --- build.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/build.js b/build.js index d8d522fa58c..68a5952e95b 100755 --- a/build.js +++ b/build.js @@ -50,9 +50,13 @@ const qunitOptions = { const parser = (await import('argparse')).default.ArgumentParser(); parser.add_argument('-r', '--rsync', { help: "rsync bundles to ssh target after build", metavar: "HOST" }); parser.add_argument('-w', '--watch', { action: 'store_true', help: "Enable watch mode" }); +parser.add_argument('-m', '--metafile', { help: "Enable bund size information file", metavar: "FILE" }); parser.add_argument('onlydir', { nargs: '?', help: "The pkg/ to build (eg. base1, shell, ...)", metavar: "DIRECTORY" }); const args = parser.parse_args(); +if (args.metafile) + pkgOptions.metafile = true; + if (args.onlydir?.includes('/')) parser.error("Directory must not contain '/'"); @@ -201,7 +205,9 @@ async function build() { }); try { - await Promise.all([pkgContext.rebuild(), qunitContext.rebuild()]); + const results = await Promise.all([pkgContext.rebuild(), qunitContext.rebuild()]); + if (args.metafile) + fs.writeFileSync(args.metafile, JSON.stringify(results[0].metafile)); } catch (e) { if (!args.watch) process.exit(1);