My personal site cherry.computer
htmx tailwind axum askama

build: migrate to ESM

esbuild already bundles all the code together into a single file so this
won't affect code generation, but it does affect the esbuild API script,
which can now make us of top-level await.

cherry.computer 7ecbdcf8 094e0c9e

verified
+15 -16
+14 -16
frontend/esbuild.js
··· 1 // @ts-check 2 /* eslint-env node */ 3 - const browserslist = require("browserslist"); 4 - const esbuild = require("esbuild"); 5 - const { esbuildPluginBrowserslist } = require("esbuild-plugin-browserslist"); 6 7 - const argv = require("minimist")(process.argv.slice(2)); 8 9 /** @type {esbuild.BuildOptions} */ 10 const baseOptions = { ··· 22 outfile: "build/app.js", 23 }; 24 if (argv.prod) { 25 - esbuild 26 - .build({ 27 - ...baseOptions, 28 - minify: true, 29 - outfile: "build/app.min.js", 30 - }) 31 - .catch(() => process.exit(1)); 32 } else if (argv.serve) { 33 - esbuild 34 - .context(devOptions) 35 - .then((context) => context.serve({ servedir: "." })) 36 - .then(({ port }) => console.log(`serving at http://localhost:${port}`)); 37 } else { 38 - esbuild.build(devOptions).catch(() => process.exit(1)); 39 }
··· 1 // @ts-check 2 /* eslint-env node */ 3 + import browserslist from "browserslist"; 4 + import esbuild from "esbuild"; 5 + import { esbuildPluginBrowserslist } from "esbuild-plugin-browserslist"; 6 + import minimist from "minimist"; 7 8 + const argv = minimist(process.argv.slice(2)); 9 10 /** @type {esbuild.BuildOptions} */ 11 const baseOptions = { ··· 23 outfile: "build/app.js", 24 }; 25 if (argv.prod) { 26 + await esbuild.build({ 27 + ...baseOptions, 28 + minify: true, 29 + outfile: "build/app.min.js", 30 + }); 31 } else if (argv.serve) { 32 + const context = await esbuild.context(devOptions); 33 + const { port } = await context.serve({ servedir: "." }); 34 + console.log(`serving at http://localhost:${port}`); 35 } else { 36 + await esbuild.build(devOptions); 37 }
+1
frontend/package.json
··· 3 "version": "1.0.0", 4 "description": "Personal site for Ivo Murrell", 5 "main": "index.js", 6 "devDependencies": { 7 "@types/node": "^22.10.5", 8 "@types/three": "^0.139.0",
··· 3 "version": "1.0.0", 4 "description": "Personal site for Ivo Murrell", 5 "main": "index.js", 6 + "type": "module", 7 "devDependencies": { 8 "@types/node": "^22.10.5", 9 "@types/three": "^0.139.0",