From dba1468e4da151b74b13d6eddb0f06b86a713d3a Mon Sep 17 00:00:00 2001 From: Eli Ribble Date: Sat, 21 Mar 2026 21:44:10 +0000 Subject: [PATCH] Improve build watch plugin Makes it much easier to see what's going on. --- build.js | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/build.js b/build.js index 0f075ee7..b28a8c98 100644 --- a/build.js +++ b/build.js @@ -6,11 +6,46 @@ const args = process.argv.slice(2); const watch = args.includes("--watch"); const minify = args.includes("--minify"); +// Plugin to show build status +const buildStatusPlugin = { + name: "build-status", + setup(build) { + let buildStart; + + build.onStart(() => { + buildStart = Date.now(); + // Clear console and move cursor to top + console.clear(); + console.log( + "\x1b[36m%s\x1b[0m", + `šŸ”Ø Building... [${new Date().toLocaleTimeString()}]`, + ); + }); + + build.onEnd((result) => { + const buildTime = Date.now() - buildStart; + if (result.errors.length > 0) { + console.log( + "\x1b[31m%s\x1b[0m", + `āŒ Build failed (${buildTime}ms) [${new Date().toLocaleTimeString()}]`, + ); + } else { + console.log( + "\x1b[32m%s\x1b[0m", + `āœ… Build complete (${buildTime}ms) [${new Date().toLocaleTimeString()}]`, + ); + } + console.log("\x1b[33m%s\x1b[0m", "\nšŸ‘€ Watching for changes..."); + }); + }, +}; + const config = { entryPoints: ["ts/main.ts"], bundle: true, format: "esm", plugins: [ + buildStatusPlugin, // Add this first sassPlugin({ quietDeps: true, silenceDeprecations: ["import"], @@ -39,7 +74,7 @@ const config = { if (watch) { const ctx = await esbuild.context(config); await ctx.watch(); - console.log("Watching for changes..."); + console.log("\x1b[33m%s\x1b[0m", "šŸ‘€ Watching for changes...\n"); } else { await esbuild.build(config); }