Bare module specifiers resolved by the browser, which removes the last reason a small page needs a bundler.
<script type="importmap">
{
"imports": {
"@td/dom": "/assets/dom-8c1f4a7.js",
"@td/fetch": "/assets/fetch-4a7e8c1.js"
}
}
</script>
<script type="module" src="/assets/main-9b2d0e6.js"></script>
The import map is generated by the same script that writes the hashed filenames, which is the coupling that makes this work — a hand-maintained map is a second place the hashes must be right. What it does not solve is a deep dependency graph, where each module is discovered only after its importer is parsed, so this suits a flat set of four and not a tree of forty.