A zero-config, high-performance bundler for HTML + TypeScript/JavaScript, powered by Bun. Smart module splitting, content hashing, watch mode, dev server, optional Next.js-style backend, and offline CDN caching — all in one binary.
# Place `biu` in your PATH, then from any project directory:
biu # Build ./src → ./dist
biu ./src ./dist # Explicit source & output dirs
biu --serve 3000 # Dev server with live reload
Note: if there's a ./backend directory, it will be used
as Next.js-style backend.
biu [options] [srcDir] [outDir]
| Argument | Default | Description |
|---|---|---|
srcDir | ./src | Source directory |
outDir | ./dist | Output directory |
| Option | Description |
|---|---|
--watch | Watch mode — rebuild on file changes |
--static <dir> | Static assets directory (default: ./static) |
--post-build <file> | Run .sh/.ts/.js script after each build |
--serve [port] | Start dev server (default port: 3000, implies --watch) |
--build [outfile] | Self-compile to standalone binary (default: ./biu) |
-v, --version | Show version |
-h, --help | Show help |
Options can appear in any order.
biu ./src ./dist
biu --serve 8080
biu --static ./public --post-build ./scripts/deploy.sh
.ts/.js
file's basename (e.g. main.ts) appears in any HTML file,
it's built as a separate module with content hash.
??): append ??
to force inline bundling:
import { myUtil } from "./utils.ts??";
| Variable | Description |
|---|---|
BIU_ASSETS_EXTS | Extra asset extensions, e.g. "glb,gltf,hdr" |
BIU_EXCLUDED | Regex pattern to exclude files, e.g. "test|spec" |