zfb

Type to search...

to open search from anywhere

Install without Node

CreatedJun 1, 2026Takeshi Takatsudo

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/.local/bin/zfb. Add that directory to your PATH if it isn’t already:

export PATH="$HOME/.local/bin:$PATH"

Environment variables:

VariableDefaultPurpose
ZFB_INSTALL$HOME/.localInstall prefix. Binary lands at $ZFB_INSTALL/bin/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/update-homebrew-formula.sh.

📝 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%\zfb\bin\zfb.exe.

Environment variables:

VariableDefaultPurpose
ZFB_INSTALL%LOCALAPPDATA%\zfbInstall root. Binary lands at $ZFB_INSTALL\bin\zfb.exe.
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 confignode:* 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:

FeatureWhy
zfb check without --skip-tscTypeScript 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.

Revision History