Build Web pages, not frameworks.
Put HTML, Javascript, TypeScript and CSS in src/.
Run: biu --serve
That's it.
No React.
No Vite config.
No framework.
Just the Web.
# Place `biu` in your PATH, start with a starter project:
biu a hello
cd hello
biu ---serve # default on port 3000
# build or serve with following commands from a project directory:
# biu # Build ./src → ./dist
# biu ./src ./dist # Explicit source & output dirs
# biu --serve 8080 # Dev server with live reload on port 8080
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" |