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 — esbuild and Tailwind ship as standalone native binaries
alongside the zfb executable (in the release tarball's binaries/ slot)
and are invoked as subprocesses located relative to the zfb executable
itself. 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 standalone
native binaries shipped with zfb, so client-side hydration and CSS processing
work with zero Node involvement.
Install paths
Linux / macOS — curl
curl -fsSL https://raw.githubusercontent.com/Takazudo/zudo-front-builder/main/install.sh | shInstalls 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/zfbThe 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 zfbWindows — PowerShell
irm https://raw.githubusercontent.com/Takazudo/zudo-front-builder/main/install.ps1 | iexInstalls 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 --versionConfig 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": [
{
"name": "blog",
"path": "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.