インストール
zudo-doc のインストールとローカル開発環境のセットアップ方法。
前提条件
Node.js 22+ — zfbおよびツールチェーンに必要
pnpm — 推奨パッケージマネージャー
Info
npm、yarn、bun も使用できますが、このガイドでは pnpm を使用します。
新規プロジェクトの作成
create-zudo-doc CLI を使うと、対話式のセットアップウィザードで新規プロジェクトをすばやく作成できます。
pnpm create zudo-doc他のパッケージマネージャーの場合:
npm create zudo-doc
yarn create zudo-doc
bunx create-zudo-doc非対話的な使用(CI、自動化、AI エージェント)では、--yes でデフォルトを使用するか、フラグを直接指定できます:
pnpm create zudo-doc my-docs --yes
pnpm create zudo-doc my-docs --lang ja --scheme "Default Dark" --no-i18n --pm pnpm --installすべてのフラグについては CLI リファレンス を参照してください。
CLI では以下のオプションを順番に設定します。
プロジェクト名
プロジェクトディレクトリの名前を入力します(デフォルト: my-docs)。
デフォルト言語
ドキュメントサイトのデフォルト言語を選択します。英語、日本語、中国語(簡体字/繁体字)、韓国語、スペイン語、フランス語、ドイツ語、ポルトガル語がサポートされています。
カラースキームモード
サイトのカラースキーム設定を選択します。
Light & Dark(トグル) — ユーザーがライトとダークテーマを切り替え可能。同梱の
Default Light/Default Darkペアを使用します。Single scheme — サイト全体で1つの固定カラースキーム。
Default LightまたはDefault Darkのいずれかです。
Light/Dark モードでは、デフォルトモード(ライトまたはダーク)の設定や、ユーザーのシステムカラースキーム設定を尊重するかどうかも選択できます。
zudo-doc が同梱するのはこの 2 つのスキームだけで、両者は 1 セットの OKLCH ランプを共有しています。ブラウズできるコミュニティ製やターミナル由来のプリセットカタログはありません。デフォルトはパッケージが所有しており、新しいスキャフォールドにはカラースキームモジュールがありません。パレットをカスタマイズするには独自のスキームモジュールを作成し、zfb.config.ts の zudoDoc({ ... }) の colorSchemes フィールドで渡します(カラーガイドを参照)。その後、Design Token Panel の Palette タブで変更をライブプレビューできます(カラースキームプレビューを参照)。
機能選択
対話式ピッカーで、国際化、検索とサイドバーツール、Claude リソースとスキル、デザインとナビゲーションの操作、バージョニングとドキュメント履歴、タグと変更履歴、デスクトップラッパー、インデックス制御のオプションモジュールを選択します。組み込みの全文/ワードマッチ検索、サイドバーフィルター、画像拡大、動的ページ遷移、フッター著作権表示はデフォルトで選択されています。
機能の完全な一覧、デフォルト、非対話的なフラグは CLI リファレンス を参照してください。
パッケージマネージャー
使用するパッケージマネージャーを選択します: pnpm(推奨)、npm、yarn、bun。スキャフォールディング後に依存関係をインストールするか確認されます。
Tip
インストーラーは選択内容を単一の zfb.config.ts に書き込みます。これはデフォルトと異なるフィールドだけを持つ zudoDoc({ … }) 呼び出しです。プロジェクト作成後にいつでも設定を変更できます。全フィールドのリファレンスは 設定 を参照してください。
代替方法: リポジトリのクローン
リポジトリを直接クローンして始めることもできます。
git clone https://github.com/zudolab/zudo-doc.git my-docs
cd my-docs
pnpm installNote
リポジトリのクローンでは、ドキュメントソースとすべての機能が含まれた完全なプロジェクトが取得できます。コードベース全体を確認したい場合や、zudo-doc 自体に貢献したい場合にこの方法を使用してください。
開発
pnpm devzfb 開発サーバーがインスタントなホットモジュールリプレースメントとともにポート4321で起動します。
Warning
ポート4321が使用可能であることを確認してください。別のプロセスがすでに使用中の場合、pnpm devはEADDRINUSEで失敗します。競合するプロセスを終了してから再試行してください。
ビルド
pnpm builddist/ ディレクトリに静的HTMLが生成されます。任意の静的ホスティングサービスにデプロイできます。
型チェック
pnpm checkプロジェクトのTypeScript型チェッカーをstrictモードで実行します。
Danger
dist/ ディレクトリはソース管理にコミットしないでください。.gitignore で除外済みです。
プロジェクト構成
新しくスキャフォールドされたプロジェクトは意図的に小さく、ファイル数はおよそ12個です:
my-docs/
├── .gitignore # node_modules, dist, .zfb
├── .npmrc # trust-policy-exclude[]=undici-types@6.21.0
├── pnpm-workspace.yaml # minimumReleaseAge: 0(pnpm 11 のリリース経過時間ゲートを無効化)
├── CLAUDE.md # project notes for Claude Code
├── package.json # deps + dev/build/preview/check scripts
├── tsconfig.json # 5-line extends of the package base config
├── zfb.config.ts # the ONE config file — a zudoDoc({ … }) call
├── pages/
│ ├── index.tsx # home route (1-line re-export)
│ └── docs/
│ └── [[...slug]].tsx # doc-route stub (see the callout below)
└── src/
├── content/
│ └── docs/
│ └── getting-started/
│ ├── index.mdx
│ ├── installation.mdx
│ └── introduction.mdx
└── styles/
└── global.css # ~20-line @import chain + your token overrides | ファイル | 役割 |
|---|---|
zfb.config.ts | プロジェクト全体の設定。@takazudo/ から zudoDoc をインポートし、選んだフィールドを渡します。それ以外はすべて文書化されたデフォルトにフォールバックします。 |
tsconfig.json | @takazudo/ を extends し、include と preact-compat の paths だけを足します。 |
src/ | パッケージの theme.css / content.css / features.css を @import し、トークン上書き用に @theme { … } ブロックを残します。 |
src/ | MDX で書くドキュメント本体。スキャフォールドは差し替え用に getting-started/ ページをいくつかシードします。 |
pages/, pages/docs/[[...slug]].tsx | 薄いルートスタブ — 下記を参照。 |
なぜこんなに少ないのか
プロジェクトが以前は自身にコピーしていたもの — レイアウト、ヘッダー、サイドバー、TOC、ナビゲーションビルダー、URL ヘルパー、カラースキームユーティリティ、フロントマタースキーマ — は、いまや @takazudo/zudo-doc から出荷され、node_modules から直接消費されます。ドキュメントルートはパッケージによって注入され(packageOwnedRoutes はデフォルトで true)、そのため pages/ ディレクトリには一式のレイアウトファイルではなく下記の2つのスタブだけが残ります。新しいプロジェクトが持つのは、本当に固有のものだけ — 設定、コンテンツ、そしていくつかのルートシームです。
なぜ pages/index.tsx があるのか
ホームルートは、パッケージ所有の静的インデックスルートを1行で re-export したものです:
export { default } from "@takazudo/zudo-doc/routes/index";静的な / ルートはビルド時の paths() 抽出を必要としないため、この re-export 形式が使えます。
なぜ pages/docs/[[...slug]].tsx があるのか
パッケージのルート注入はビルド時にドキュメントページをレンダリングしますが、注入された動的ルートは現在 zfb dev(pnpm dev)で 404 を返します。dev のオーサリングループを機能させ続けるため、パッケージの認可されたエントリーポイント(@takazudo/ + / + virtual:zudo-doc-route-context モジュール)からルートを再構築する小さな自己完結型スタブが出荷されます。これにより / は zfb dev と zfb build の両方で 200 を返します。
これはスキャフォールドの中で唯一の暫定ファイルであり、アップストリームの dev レンダリングギャップが解消され次第なくなります(フォローアップ #2667)。
ドキュメントページの作成と整理方法については ドキュメントの書き方 ガイドを、設定の微調整から完全なソース制御までのはしごについては zudo-doc のカスタマイズ を参照してください。