Export Standalone
Produce a single HTML file that works offline (no external dependencies). Uses monolith — a Rust CLI that inlines everything.
Preflight
Bash(which monolith)— check installed. If missing:- Tell user: "
monolithnot found. Install withbrew install monolith(macOS) and rerun." - Stop.
- Tell user: "
Steps
Resolve paths:
$0= input HTML (required)$1= output HTML (default:<input>-standalone.html)Bash(mkdir -p $(dirname <output>))if needed
Run monolith:
Bash(monolith "<input>" --isolate --no-metadata -o "<output>")Flags:
--isolate— CSP to prevent any remote resource loads after bundling--no-metadata— strip<!-- saved from ... -->metadata
Report:
Bash(stat -f%z "<output>")orBash(ls -la "<output>")for size- "Bundled
<input>→<output>(<size>KB). Works offline."
Tradeoffs
- Pros: single file, drop in email/chat, no CDN dependency, survives archive
- Cons: larger file size (5-10× original), no HMR, fonts often inlined as base64 (bigger)
- Interactivity preserved (React + Babel still run at load time), but network fetches fail by design