Install without Node
Install zfb as a standalone binary — no Node.js or npm required. Covers curl, Homebrew, and Windows PowerShell install paths.
zfb ships as a self-contained Rust binary. Node.js is not required to install or run it — the build engine, esbuild, and Tailwind are all compiled into the binary or bundled as Go binaries. You only need Node as an opt-in escape hatch for specific features (see When Node is still needed below).
The Node-free path supports the full feature set for content sites: Markdown, MDX, HTML pages, and islands — esbuild and Tailwind run as embedded Go binaries inside the zfb binary, so client-side hydration works with zero Node involvement.
Install paths
Linux / macOS — curl
curl -fsSL https://raw.githubusercontent.com/Takazudo/zudo-front-builder/main/install.sh | sh
Installs zfb to $HOME/. Add that directory to your PATH
if it isn’t already:
export PATH="$HOME/.local/bin:$PATH"
Environment variables:
| Variable | Default | Purpose |
|---|---|---|
ZFB_INSTALL | $HOME/.local | Install prefix. Binary lands at $ZFB_. |
ZFB_VERSION | (latest stable) | Pin a release. Use v0.X.Y for a specific tag, or latest-prerelease to opt into pre-releases. |
macOS — Homebrew
brew install Takazudo/tap/zfb
The tap is hosted at
Takazudo/homebrew-tap.
The formula is updated on each stable release by
scripts/.
📝 Homebrew tracks the stable channel
Like the npm latest tag, the Homebrew formula follows stable releases
only — it has no per-version pin or prerelease opt-in. To install a specific
version or a prerelease, use the curl installer with ZFB_VERSION (e.g.
ZFB_VERSION=latest-prerelease) instead.
During the current pre-1.0 phase the tap may serve the latest prerelease as
an early-access build until the first stable vX.Y.Z ships.
To update to a newer version later:
brew upgrade zfb
Windows — PowerShell
irm https://raw.githubusercontent.com/Takazudo/zudo-front-builder/main/install.ps1 | iex
Installs zfb.exe to %LOCALAPPDATA%\.
Environment variables:
| Variable | Default | Purpose |
|---|---|---|
ZFB_INSTALL | %LOCALAPPDATA%\zfb | Install root. Binary lands at $ZFB_. |
ZFB_VERSION | (latest stable) | Pin a release tag (e.g. v0.2.0) or latest-prerelease. |
Add the binary to your PATH for the current session:
$env:PATH = "$env:LOCALAPPDATA\zfb\bin;$env:PATH"
Or permanently (open a new terminal after running):
[System.Environment]::SetEnvironmentVariable(
'PATH',
"$env:LOCALAPPDATA\zfb\bin;" + [System.Environment]::GetEnvironmentVariable('PATH', 'User'),
'User'
)
Windows — Scoop
📝 Not yet available
A Scoop bucket (Takazudo/scoop-bucket) is planned but the bucket
repository has not been created yet. Use the PowerShell script above in
the meantime.
Verify the install
zfb --version
Config file: zfb.config.json vs zfb.config.ts
Both config formats work without Node. zfb.config.ts is evaluated
in-process via the embedded V8 isolate that ships with the default zfb
binary — there is no runtime Node dependency.
zfb.config.ts is a data config — node:* imports, process.env, and
other Node-only APIs are not available inside the evaluator. Use
zfb.config.ts when you want TypeScript types, comments, and computed values.
Use zfb.config.json for a plain JSON alternative.
// zfb.config.json — also Node-free compatible
{
"framework": "preact",
"outDir": "dist",
"collections": {
"blog": {
"dir": "content/blog",
"schema": { "type": "object", "properties": { "title": { "type": "string" } } }
}
}
}
If both zfb.config.ts and zfb.config.json are present, the .ts file
wins.
When Node is still needed
The following features require Node in PATH:
| Feature | Why |
|---|---|
zfb check without --skip-tsc | TypeScript type-checking delegates to tsc, which is a Node package. Pass --skip-tsc to run the non-TS checks only. |
Cloudflare adapter (@takazudo/zfb-adapter-cloudflare) | The adapter depends on Wrangler, which is a Node CLI. SSR deployments to Cloudflare Pages always need Node in the deploy environment. |
Everything else — building, dev server, islands, Tailwind, MDX, content
collections, and zfb.config.ts evaluation — runs Node-free.
Upgrading zfb
An in-place zfb upgrade command is planned for a future release. For now,
re-run the same install command you used initially — it overwrites the
existing binary with the latest version.