Twelve lines of build script and no dependencies

A site with four modules, and a build that is a shell script calling one binary.

#!/usr/bin/env bash
set -euo pipefail

esbuild src/main.ts 
  --bundle --minify --format=esm --target=es2022 
  --entry-names='[name]-[hash]' 
  --outdir=dist/assets 
  --metafile=dist/meta.json

jq -r '.outputs | keys[]' dist/meta.json 
  | sed 's|^dist/||' > dist/manifest.txt

The metafile is what makes the hashed filename usable — something has to tell the template which file to reference, and that is the one piece a bundler provides that a single command does not. Twelve lines against a configuration file is not obviously better and it is obviously smaller, and the honest argument is that nobody has to know a tool’s option vocabulary to read it.