Scripts & Bundles
Client-side JavaScript lives under site/scripts/. By convention, each entry file becomes one bundle:
site/scripts/ app.js entry, becomes /site/scripts/app.js components/ terminal.js imported by app.jsBundling
asimov-static uses Browserify-style resolution to walk require() calls from each entry file and produce one bundle per entry. In production, bundles are minified and content-hashed.
Reference from templates
<script src="{{script "app"}}" defer></script>The {{script}} helper resolves the same way as {{style}} — dev returns the raw path, prod returns the hashed asset URL.
Vendor code
Anything under site/scripts/vendor/ is treated as already-bundled and copied through without further processing — useful for hand-minified vendor libraries you don’t want walked.
ES modules
The original framework targets CommonJS. If you are reviving an asimov.js project today, the recommended path is to swap the bundler step for esbuild or Bun and keep the same {{script}} contract — templates don’t need to know which bundler produced the file.