Color mode

CLI Reference

Riebeckite CLI は、Site の作成、開発、検証、診断、Build、公開などを行うためのコマンドです。

基本的には Riebeckite Site の application directory で実行します。

sh
npm exec riebeckite <command>

CLI は current working directory から application root を解決します。

コマンド一覧

text
riebeckite init [directory] [--preset <name>] [--utilities <names>] [--force] [--list-presets]
 
riebeckite dev
riebeckite check
riebeckite doctor
riebeckite build [--full]
riebeckite clean [--output | --all]
riebeckite deploy [--dry-run | setup | domain]
riebeckite profile [--full]
 
riebeckite inspect config
riebeckite inspect plugins
riebeckite inspect content [--list]
riebeckite inspect graph
riebeckite inspect build

それぞれの役割は次のとおりです。

Command 何をする? Build State
init 新しい Site を作る 変更しない
dev 開発環境を起動する Integration に依存
check 設定が正しいか検証する 変更しない
doctor Project 全体の問題を診断する 変更しない
build Site を Build する 成功時のみ更新
clean Riebeckite が管理する状態を削除する。--output は Build 出力のみ、--all は両方を削除する 変更しない
deploy 生成物を Cloudflare Workers へ公開する。--dry-run は検証のみ、setup は GitHub Actions の継続デプロイを準備する、domain は Custom Domain を設定する 変更しない
profile Build の性能を調査する Build に依存
inspect 現在の解決結果を見る 変更しない

どのコマンドを使う?

目的から選ぶと分かりやすくなります。

Diagram source
text
flowchart TD
    Q{"何をしたい?"}
 
    Q -->|"Siteを作りたい"| Init["init"]
    Q -->|"開発したい"| Dev["dev"]
    Q -->|"設定が正しいか確認したい"| Check["check"]
    Q -->|"問題の原因を調べたい"| Doctor["doctor"]
    Q -->|"Siteを生成したい"| Build["build"]
    Q -->|"生成物を消したい"| Clean["clean"]
    Q -->|"公開したい"| Deploy["deploy"]
    Q -->|"Buildが遅い"| Profile["profile"]
    Q -->|"現在の状態を見たい"| Inspect["inspect"]

特に混同しやすいのが check、doctor、inspect、build です。

簡単に分けると、

text
check
  → 正しい?
 
doctor
  → 問題はない?
 
inspect
  → 今どうなっている?
 
build
  → 実際に生成する

と考えると分かりやすいです。

init

新しい Riebeckite Site を作成します。

sh
riebeckite init

別のディレクトリへ作成する場合は、

sh
riebeckite init my-site

のように指定します。

生成される Site には、基本的な

  • Riebeckite config
  • Vite / HonoX application
  • route
  • stylesheet
  • 初期 content

が含まれます。

生成された Site は Riebeckite monorepo に依存しない、自己完結した application です。

Preset を選ぶ

sh
riebeckite init my-site --preset starter

--preset で Site の初期構成を選択できます。

既定値は starter です。

利用できる preset は、

sh
riebeckite init --list-presets

で確認できます。

Project file を選ぶ

preset とは別に、任意の project file を生成できます。

sh
riebeckite init my-site --utilities editorconfig,npmrc,vscode

--utilities には editorconfig、gitattributes、biome、npmrc、vscode をカンマ区切りで指定します。既定では editorconfig,gitattributes,biome を生成し、npmrc と vscode は生成しません。none を指定すると project file を生成しません。

名前 ファイル
editorconfig .editorconfig
gitattributes .gitattributes
biome biome.json
npmrc .npmrc
vscode .vscode/settings.json

create-riebeckite の対話式では Extra project files の質問で個別に選択できます。

既存ファイルがある場合

init は、生成対象となるファイルがすでに存在する場合、そのまま上書きしません。

意図的に上書きする場合は、

sh
riebeckite init my-site --force

を使用します。

--force は既存ファイルへ影響するため、内容を確認してから使用してください。

create-riebeckite

同じ Site generator は create-riebeckite からも利用できます。

sh
npx create-riebeckite

--preset や --list-presets も同様に利用できます。

対話式では、Content source に続いてデプロイ設定を尋ねられます。

選択肢 生成されるもの
Cloudflare Workers Wrangler の依存と wrangler.jsonc。依存関係のインストール後に Deploy now? を確認
GitHub Actions wrangler.jsonc と .github/workflows/deploy.yml
Not now デプロイ設定を追加しない

Cloudflare Workers で Deploy now? に Yes と答えると、生成後に build と riebeckite deploy が続けて実行されます。Later の場合は生成だけを行い、次を実行して公開します。

sh
npm run build
npm exec riebeckite deploy

Site を生成した後は依存関係を install し、

sh
npm install
npm exec riebeckite check
npm exec riebeckite build

で正常に構成されていることを確認できます。

dev

開発環境を起動します。

sh
npm exec riebeckite dev

Riebeckite Integration の development workflow を利用して Site を起動します。

実際の development server や Build State の扱いは、使用している Integration に依存します。

通常の HonoX Site では、開発中のページ確認にこのコマンドを使用します。

check

Config、Plugin、Capability の設定が有効か検証します。

sh
npm exec riebeckite check

たとえば、

  • config の形式が正しいか
  • Plugin の設定が正しいか
  • 必要な capability が成立しているか

などを確認します。

Diagram source
text
flowchart LR
    Config["Config"]
    Plugins["Plugins"]
    Capability["Capabilities"]
 
    Config --> Check["check"]
    Plugins --> Check
    Capability --> Check
 
    Check --> Result{"Valid?"}

check が成功したからといって、Site がすでに Build / Deploy されていることを意味するわけではありません。

check が保証するのは Configuration が有効であることです。

Plugin Option Validation

Plugin の option validation も check の一部として実行されます。

Plugin は validateOptions を使って、自身の設定を検証できます。

たとえば Analytics Plugin なら、

  • provider
  • collector URL

などの設定を検証できます。

不正な Plugin 設定は、実際の Build より前に check で検出できます。

doctor

Project の状態を広く診断します。

sh
npm exec riebeckite doctor

doctor は、

  • environment
  • config
  • Plugin
  • content
  • Build State

などを確認します。

Diagram source
text
flowchart LR
    Environment["Environment"]
    Config["Config"]
    Plugin["Plugins"]
    Content["Content"]
    State["Build State"]
 
    Environment --> Doctor["doctor"]
    Config --> Doctor
    Plugin --> Doctor
    Content --> Doctor
    State --> Doctor
 
    Doctor --> Diagnostics["Diagnostics"]

1つの診断に失敗しても、安全に続行できる独立した診断は可能な限り継続します。

Health check が失敗した場合は non-zero status で終了します。

Deprecated Usage

古い API や非推奨の設定が検出された場合は、

text
Deprecated usage

として warning が表示されます。

これは移行を促すための情報であり、それだけで doctor が失敗扱いになるわけではありません。

build

Site を Build します。

sh
npm exec riebeckite build

通常は incremental state を利用して、再利用可能な処理を省略します。

Diagram source
text
flowchart TD
    Build["riebeckite build"]
    State{"再利用可能なState?"}
 
    Build --> State
    State -->|Yes| Incremental["Incremental Build"]
    State -->|No| Full["必要な処理を再実行"]
 
    Incremental --> Success{"成功?"}
    Full --> Success
 
    Success -->|Yes| Save["新しいStateを保存"]
    Success -->|No| Keep["以前の有効なStateを維持"]

Build State は Build が成功した場合だけ更新されます。

失敗した Build が以前の正常な state を壊すことはありません。

Full Build

incremental state の再利用を避けたい場合は、

sh
npm exec -- riebeckite build --full

を使用します。

Build の再現確認や incremental behavior の問題を切り分ける場合に利用できます。

詳しくは Build System を参照してください。

clean

Riebeckite が生成・管理する再生成可能な状態を削除します。

sh
npm exec riebeckite clean

option を指定しない場合は、application directory 配下の managed state root(.riebeckite/)を削除します。ここには Build State、Plugin Cache、persistent content cache、SSG output cache が含まれます。

Build 出力だけを削除する場合は、

sh
npm exec -- riebeckite clean --output

managed state と Build 出力の両方を削除する場合は、

sh
npm exec -- riebeckite clean --all

を使用します。

削除対象の配置は解決済みの Configuration から取得するため、Build 出力の場所を hard-code しません。対象が存在しない場合もエラーにせず、再実行しても成功します。Content、Config、Theme / Plugin の source、public/ の asset、Git の metadata は削除しません。application root の外を指す path は削除せず、symlink / junction は link 先を辿らずに link 自体だけを削除します。app/.riebeckite/ の generated source は、次の dev や build で再生成されるため残します。

incremental state や persistent cache、以前の Build 出力に依存せずに Site を再現したい場合は、cold build として

sh
npm exec -- riebeckite clean --all
npm exec riebeckite build

を実行します。Build が遅い、または incremental reuse が疑わしいときの切り分けにも利用できます。既定の配置ではこれらの cache は .riebeckite/ 配下にあります。別の場所に cache directory を設定している場合、その場所は clean の削除対象に含まれません。

deploy

Build 済みの生成物を Cloudflare Workers へ公開します。

sh
npm exec riebeckite deploy

deploy は Wrangler を呼び出して dist/ を公開します。初回は Wrangler の OAuth で Cloudflare にログインし、wrangler.jsonc が無い場合はプロジェクト名から生成します。公開 URL は https://<worker-name>.<account>.workers.dev です。create-riebeckite で Cloudflare Workers を選ぶと、Wrangler の依存と wrangler.jsonc を含む、このコマンドを実行できるサイトが生成されます。

deploy は Build を行いません。先に npm exec riebeckite build を実行してください。

Cloudflare へ接続せずに設定とアセットを検証する場合は、

sh
npm exec -- riebeckite deploy --dry-run

を使用します。npm exec は --dry-run を自身の option として解釈する場合があるため、-- で区切ってください。

push ごとに自動で deploy したい場合は GitHub Actions を利用できます。詳しくは Deployment を参照してください。

deploy setup

すでに Local-first で公開している Site に、GitHub Actions による継続デプロイを追加します。

sh
npm exec riebeckite deploy setup

deploy setup は、Git Repository と GitHub Remote を検出し、GitHub CLI(gh)と Wrangler のログインを確認し、create-riebeckite と同じテンプレートから .github/workflows/deploy.yml を作成します。Wrangler のログイン状態から Cloudflare Account を取得し、複数ある場合は選択します。最後に CLOUDFLARE_ACCOUNT_ID と CLOUDFLARE_API_TOKEN を Repository Secret として登録します。

Token は hidden prompt、または non-interactive 用の環境変数 CLOUDFLARE_API_TOKEN から読み取り、standard input 経由で gh secret set へ渡します。command line の引数には載せず、ファイルにも書き込みません。

GitHub Repository の作成と push は行いません。Riebeckite 以外の既存 workflow を検出した場合は、上書きせずそのまま報告し、secret の登録には進まずに停止します。再実行すると、一致する workflow と登録済みの secret は検出され、残りの手順だけを実行します。別の deployment workflow が既にある場合は、置き換えるか削除してから再実行してください。

deploy setup は Wrangler のログインを使うため、Wrangler の依存が Site に install されている必要があります。create-riebeckite で Cloudflare Workers を選んだ Site には含まれています。

deploy domain

deploy が公開する Worker に Cloudflare Workers の Custom Domain を設定します。

sh
npm exec riebeckite deploy domain

deploy domain は Site の Wrangler 設定(wrangler.jsonc または wrangler.json)を読み、custom_domain: true を持つ routes エントリを追加します。引数は取りません。docs.example.com のような hostname を対話的に入力し、変更内容を表示して確認したうえで書き込みます。

初回の deploy の後で実行してください。Wrangler 設定が無い場合や terminal が interactive でない場合は、hint を表示して停止します。wrangler.toml は変更しません。書き込み後は Deploy now? を確認し、選ばなかった場合は npm exec riebeckite deploy を案内します。再実行すると設定済みの domain を検出し、書き込みを省略します。

profile

Build のどこに時間がかかっているか調査します。

sh
npm exec riebeckite profile

Trace を収集し、Build phase や Plugin 処理などの performance report を表示します。

incremental reuse を避けて計測する場合は、

sh
npm exec -- riebeckite profile --full

を使用します。

profile は性能調査のための command であり、Configuration validity を確認するための command ではありません。

report では Plugin cache と Content cache を分けて表示します。Content cache には miss / bypass の理由も含まれるため、なぜ再利用されなかったのかを確認できます。

inspect

Riebeckite が現在認識している状態を確認します。

sh
npm exec riebeckite inspect plugins

Inspector は read-only です。

実行しても、

  • Build
  • Build State の書き込み
  • Plugin Cache の書き込み
  • Asset emission
  • Vite / HonoX Build
  • Artifact render
  • Config の自動修正

を行いません。

Config

sh
npm exec riebeckite inspect config

解決済みの Configuration を確認します。

Plugins

sh
npm exec riebeckite inspect plugins

現在有効な Plugin を確認します。

Content

sh
npm exec -- riebeckite inspect content --list

現在の Content entry と解決済みの canonical permalink などを確認します。

特定の記事がどの URL として認識されているか確認したい場合に便利です。

Graph

sh
npm exec riebeckite inspect graph

Content Graph を確認します。

WikiLink、backlink、graph extension などを調査するときに利用できます。

Build

sh
npm exec riebeckite inspect build

現在の incremental Build State を確認します。

State が存在しない場合や壊れている場合も、新しい state を生成せず、その状態と理由を表示します。

Inspector の詳しい設計については Inspector を参照してください。

Error の表示

CLI command が失敗した場合は、可能な範囲で構造化されたエラー情報を表示します。

主に、

  • Error 名
  • Message
  • Error code
  • File path
  • 修正方法の hint

などです。

原因となった error がネストしている場合は、

text
Caused by:

として表示されます。

単に「失敗した」と表示するのではなく、何が失敗し、どこを確認すればよいかが分かることを目標としています。

通常の Workflow

新しく Site を作る場合は、次のような流れになります。

Diagram source
text
flowchart LR
    Init["init"]
    Install["npm install"]
    Check["check"]
    Dev["dev"]
    Build["build"]
    Deploy["deploy"]
 
    Init --> Install
    Install --> Check
    Check --> Dev
    Dev --> Build
    Build --> Deploy

build の後は npm exec riebeckite deploy で生成物を公開できます。

問題が発生した場合は、目的に応じて doctor、inspect、profile を使います。

Diagram source
text
flowchart TD
    Problem{"問題がある"}
 
    Problem -->|"設定がおかしい?"| Check["check"]
    Problem -->|"原因が分からない"| Doctor["doctor"]
    Problem -->|"解決結果を確認したい"| Inspect["inspect"]
    Problem -->|"Buildが遅い"| Profile["profile"]
    Problem -->|"Incrementalを疑う"| Full["build --full"]

迷った場合は、

作るなら init、開発するなら dev、検証するなら check、診断するなら doctor、見るだけなら inspect、生成するなら build、公開するなら deploy、速度を調べるなら profile、状態を消すなら clean

と覚えておくと、各 command の役割を区別しやすくなります。

診断結果については Diagnostics、非推奨 API からの移行については Upgrading、Build State については Build System を参照してください。

History

1 changesCollapseExpand
1 + # CLI Reference
2 +
3 + Riebeckite CLI は、Site の作成、開発、検証、診断、Build、公開などを行うためのコマンドです。
4 +
5 + 基本的には **Riebeckite Site の application directory で実行します。**
6 +
7 + ```sh id="vgst3p"
8 + npm exec riebeckite <command>
9 + ```
10 +
11 + CLI は current working directory から application root を解決します。
12 +
13 + ## コマンド一覧
14 +
15 + ```text id="7uw50m"
16 + riebeckite init [directory] [--preset <name>] [--utilities <names>] [--force] [--list-presets]
17 +
18 + riebeckite dev
19 + riebeckite check
20 + riebeckite doctor
21 + riebeckite build [--full]
22 + riebeckite clean [--output | --all]
23 + riebeckite deploy [--dry-run | setup | domain]
24 + riebeckite profile [--full]
25 +
26 + riebeckite inspect config
27 + riebeckite inspect plugins
28 + riebeckite inspect content [--list]
29 + riebeckite inspect graph
30 + riebeckite inspect build
31 + ```
32 +
33 + それぞれの役割は次のとおりです。
34 +
35 + | Command | 何をする? | Build State |
36 + | --- | --- | --- |
37 + | `init` | 新しい Site を作る | 変更しない |
38 + | `dev` | 開発環境を起動する | Integration に依存 |
39 + | `check` | 設定が正しいか検証する | 変更しない |
40 + | `doctor` | Project 全体の問題を診断する | 変更しない |
41 + | `build` | Site を Build する | 成功時のみ更新 |
42 + | `clean` | Riebeckite が管理する状態を削除する。`--output` は Build 出力のみ、`--all` は両方を削除する | 変更しない |
43 + | `deploy` | 生成物を Cloudflare Workers へ公開する。`--dry-run` は検証のみ、`setup` は GitHub Actions の継続デプロイを準備する、`domain` は Custom Domain を設定する | 変更しない |
44 + | `profile` | Build の性能を調査する | Build に依存 |
45 + | `inspect` | 現在の解決結果を見る | 変更しない |
46 +
47 + ## どのコマンドを使う?
48 +
49 + 目的から選ぶと分かりやすくなります。
50 +
51 + ```mermaid id="ctqx7e"
52 + flowchart TD
53 + Q{"何をしたい?"}
54 +
55 + Q -->|"Siteを作りたい"| Init["init"]
56 + Q -->|"開発したい"| Dev["dev"]
57 + Q -->|"設定が正しいか確認したい"| Check["check"]
58 + Q -->|"問題の原因を調べたい"| Doctor["doctor"]
59 + Q -->|"Siteを生成したい"| Build["build"]
60 + Q -->|"生成物を消したい"| Clean["clean"]
61 + Q -->|"公開したい"| Deploy["deploy"]
62 + Q -->|"Buildが遅い"| Profile["profile"]
63 + Q -->|"現在の状態を見たい"| Inspect["inspect"]
64 + ```
65 +
66 + 特に混同しやすいのが `check`、`doctor`、`inspect`、`build` です。
67 +
68 + 簡単に分けると、
69 +
70 + ```text id="1djofm"
71 + check
72 + → 正しい?
73 +
74 + doctor
75 + → 問題はない?
76 +
77 + inspect
78 + → 今どうなっている?
79 +
80 + build
81 + → 実際に生成する
82 + ```
83 +
84 + と考えると分かりやすいです。
85 +
86 + ## `init`
87 +
88 + 新しい Riebeckite Site を作成します。
89 +
90 + ```sh id="18r7wl"
91 + riebeckite init
92 + ```
93 +
94 + 別のディレクトリへ作成する場合は、
95 +
96 + ```sh id="81jmbp"
97 + riebeckite init my-site
98 + ```
99 +
100 + のように指定します。
101 +
102 + 生成される Site には、基本的な
103 +
104 + - Riebeckite config
105 + - Vite / HonoX application
106 + - route
107 + - stylesheet
108 + - 初期 content
109 +
110 + が含まれます。
111 +
112 + 生成された Site は Riebeckite monorepo に依存しない、自己完結した application です。
113 +
114 + ### Preset を選ぶ
115 +
116 + ```sh id="vt7gdb"
117 + riebeckite init my-site --preset starter
118 + ```
119 +
120 + `--preset` で Site の初期構成を選択できます。
121 +
122 + 既定値は `starter` です。
123 +
124 + 利用できる preset は、
125 +
126 + ```sh id="b0n6ph"
127 + riebeckite init --list-presets
128 + ```
129 +
130 + で確認できます。
131 +
132 + ### Project file を選ぶ
133 +
134 + preset とは別に、任意の project file を生成できます。
135 +
136 + ```sh id="pf8k21"
137 + riebeckite init my-site --utilities editorconfig,npmrc,vscode
138 + ```
139 +
140 + `--utilities` には `editorconfig`、`gitattributes`、`biome`、`npmrc`、`vscode` をカンマ区切りで指定します。既定では `editorconfig,gitattributes,biome` を生成し、`npmrc` と `vscode` は生成しません。`none` を指定すると project file を生成しません。
141 +
142 + | 名前 | ファイル |
143 + | --- | --- |
144 + | `editorconfig` | `.editorconfig` |
145 + | `gitattributes` | `.gitattributes` |
146 + | `biome` | `biome.json` |
147 + | `npmrc` | `.npmrc` |
148 + | `vscode` | `.vscode/settings.json` |
149 +
150 + `create-riebeckite` の対話式では `Extra project files` の質問で個別に選択できます。
151 +
152 + ### 既存ファイルがある場合
153 +
154 + `init` は、生成対象となるファイルがすでに存在する場合、そのまま上書きしません。
155 +
156 + 意図的に上書きする場合は、
157 +
158 + ```sh id="l5kjod"
159 + riebeckite init my-site --force
160 + ```
161 +
162 + を使用します。
163 +
164 + `--force` は既存ファイルへ影響するため、内容を確認してから使用してください。
165 +
166 + ### `create-riebeckite`
167 +
168 + 同じ Site generator は `create-riebeckite` からも利用できます。
169 +
170 + ```sh id="kyw0rx"
171 + npx create-riebeckite
172 + ```
173 +
174 + `--preset` や `--list-presets` も同様に利用できます。
175 +
176 + 対話式では、Content source に続いてデプロイ設定を尋ねられます。
177 +
178 + | 選択肢 | 生成されるもの |
179 + | --- | --- |
180 + | `Cloudflare Workers` | Wrangler の依存と `wrangler.jsonc`。依存関係のインストール後に `Deploy now?` を確認 |
181 + | `GitHub Actions` | `wrangler.jsonc` と `.github/workflows/deploy.yml` |
182 + | `Not now` | デプロイ設定を追加しない |
183 +
184 + `Cloudflare Workers` で `Deploy now?` に `Yes` と答えると、生成後に build と `riebeckite deploy` が続けて実行されます。`Later` の場合は生成だけを行い、次を実行して公開します。
185 +
186 + ```sh
187 + npm run build
188 + npm exec riebeckite deploy
189 + ```
190 +
191 + Site を生成した後は依存関係を install し、
192 +
193 + ```sh id="gzg1my"
194 + npm install
195 + npm exec riebeckite check
196 + npm exec riebeckite build
197 + ```
198 +
199 + で正常に構成されていることを確認できます。
200 +
201 + ## `dev`
202 +
203 + 開発環境を起動します。
204 +
205 + ```sh id="ujiy7q"
206 + npm exec riebeckite dev
207 + ```
208 +
209 + Riebeckite Integration の development workflow を利用して Site を起動します。
210 +
211 + 実際の development server や Build State の扱いは、使用している Integration に依存します。
212 +
213 + 通常の HonoX Site では、開発中のページ確認にこのコマンドを使用します。
214 +
215 + ## `check`
216 +
217 + Config、Plugin、Capability の設定が有効か検証します。
218 +
219 + ```sh id="5a2lrf"
220 + npm exec riebeckite check
221 + ```
222 +
223 + たとえば、
224 +
225 + - config の形式が正しいか
226 + - Plugin の設定が正しいか
227 + - 必要な capability が成立しているか
228 +
229 + などを確認します。
230 +
231 + ```mermaid id="8ewhbp"
232 + flowchart LR
233 + Config["Config"]
234 + Plugins["Plugins"]
235 + Capability["Capabilities"]
236 +
237 + Config --> Check["check"]
238 + Plugins --> Check
239 + Capability --> Check
240 +
241 + Check --> Result{"Valid?"}
242 + ```
243 +
244 + `check` が成功したからといって、Site がすでに Build / Deploy されていることを意味するわけではありません。
245 +
246 + `check` が保証するのは **Configuration が有効であること**です。
247 +
248 + ### Plugin Option Validation
249 +
250 + Plugin の option validation も `check` の一部として実行されます。
251 +
252 + Plugin は `validateOptions` を使って、自身の設定を検証できます。
253 +
254 + たとえば Analytics Plugin なら、
255 +
256 + - provider
257 + - collector URL
258 +
259 + などの設定を検証できます。
260 +
261 + 不正な Plugin 設定は、実際の Build より前に `check` で検出できます。
262 +
263 + ## `doctor`
264 +
265 + Project の状態を広く診断します。
266 +
267 + ```sh id="zruccx"
268 + npm exec riebeckite doctor
269 + ```
270 +
271 + `doctor` は、
272 +
273 + - environment
274 + - config
275 + - Plugin
276 + - content
277 + - Build State
278 +
279 + などを確認します。
280 +
281 + ```mermaid id="f8k3hz"
282 + flowchart LR
283 + Environment["Environment"]
284 + Config["Config"]
285 + Plugin["Plugins"]
286 + Content["Content"]
287 + State["Build State"]
288 +
289 + Environment --> Doctor["doctor"]
290 + Config --> Doctor
291 + Plugin --> Doctor
292 + Content --> Doctor
293 + State --> Doctor
294 +
295 + Doctor --> Diagnostics["Diagnostics"]
296 + ```
297 +
298 + 1つの診断に失敗しても、安全に続行できる独立した診断は可能な限り継続します。
299 +
300 + Health check が失敗した場合は non-zero status で終了します。
301 +
302 + ### Deprecated Usage
303 +
304 + 古い API や非推奨の設定が検出された場合は、
305 +
306 + ```text id="q0zh69"
307 + Deprecated usage
308 + ```
309 +
310 + として warning が表示されます。
311 +
312 + これは移行を促すための情報であり、それだけで `doctor` が失敗扱いになるわけではありません。
313 +
314 + ## `build`
315 +
316 + Site を Build します。
317 +
318 + ```sh id="iznhhd"
319 + npm exec riebeckite build
320 + ```
321 +
322 + 通常は incremental state を利用して、再利用可能な処理を省略します。
323 +
324 + ```mermaid id="l50vlh"
325 + flowchart TD
326 + Build["riebeckite build"]
327 + State{"再利用可能なState?"}
328 +
329 + Build --> State
330 + State -->|Yes| Incremental["Incremental Build"]
331 + State -->|No| Full["必要な処理を再実行"]
332 +
333 + Incremental --> Success{"成功?"}
334 + Full --> Success
335 +
336 + Success -->|Yes| Save["新しいStateを保存"]
337 + Success -->|No| Keep["以前の有効なStateを維持"]
338 + ```
339 +
340 + Build State は **Build が成功した場合だけ**更新されます。
341 +
342 + 失敗した Build が以前の正常な state を壊すことはありません。
343 +
344 + ### Full Build
345 +
346 + incremental state の再利用を避けたい場合は、
347 +
348 + ```sh id="wpr38p"
349 + npm exec -- riebeckite build --full
350 + ```
351 +
352 + を使用します。
353 +
354 + Build の再現確認や incremental behavior の問題を切り分ける場合に利用できます。
355 +
356 + 詳しくは [Build System](../framework/build-system.md) を参照してください。
357 +
358 + ## `clean`
359 +
360 + Riebeckite が生成・管理する再生成可能な状態を削除します。
361 +
362 + ```sh id="cln001"
363 + npm exec riebeckite clean
364 + ```
365 +
366 + option を指定しない場合は、application directory 配下の managed state root(`.riebeckite/`)を削除します。ここには Build State、Plugin Cache、persistent content cache、SSG output cache が含まれます。
367 +
368 + Build 出力だけを削除する場合は、
369 +
370 + ```sh id="cln002"
371 + npm exec -- riebeckite clean --output
372 + ```
373 +
374 + managed state と Build 出力の両方を削除する場合は、
375 +
376 + ```sh id="cln003"
377 + npm exec -- riebeckite clean --all
378 + ```
379 +
380 + を使用します。
381 +
382 + 削除対象の配置は解決済みの Configuration から取得するため、Build 出力の場所を hard-code しません。対象が存在しない場合もエラーにせず、再実行しても成功します。Content、Config、Theme / Plugin の source、`public/` の asset、Git の metadata は削除しません。application root の外を指す path は削除せず、symlink / junction は link 先を辿らずに link 自体だけを削除します。`app/.riebeckite/` の generated source は、次の `dev` や `build` で再生成されるため残します。
383 +
384 + incremental state や persistent cache、以前の Build 出力に依存せずに Site を再現したい場合は、cold build として
385 +
386 + ```sh id="cln004"
387 + npm exec -- riebeckite clean --all
388 + npm exec riebeckite build
389 + ```
390 +
391 + を実行します。Build が遅い、または incremental reuse が疑わしいときの切り分けにも利用できます。既定の配置ではこれらの cache は `.riebeckite/` 配下にあります。別の場所に cache directory を設定している場合、その場所は `clean` の削除対象に含まれません。
392 +
393 + ## `deploy`
394 +
395 + Build 済みの生成物を Cloudflare Workers へ公開します。
396 +
397 + ```sh id="k4n8we"
398 + npm exec riebeckite deploy
399 + ```
400 +
401 + `deploy` は Wrangler を呼び出して `dist/` を公開します。初回は Wrangler の OAuth で Cloudflare にログインし、`wrangler.jsonc` が無い場合はプロジェクト名から生成します。公開 URL は `https://<worker-name>.<account>.workers.dev` です。`create-riebeckite` で `Cloudflare Workers` を選ぶと、Wrangler の依存と `wrangler.jsonc` を含む、このコマンドを実行できるサイトが生成されます。
402 +
403 + `deploy` は Build を行いません。先に `npm exec riebeckite build` を実行してください。
404 +
405 + Cloudflare へ接続せずに設定とアセットを検証する場合は、
406 +
407 + ```sh id="d9x2qb"
408 + npm exec -- riebeckite deploy --dry-run
409 + ```
410 +
411 + を使用します。`npm exec` は `--dry-run` を自身の option として解釈する場合があるため、`--` で区切ってください。
412 +
413 + push ごとに自動で deploy したい場合は GitHub Actions を利用できます。詳しくは [Deployment](../guides/deployment/README.md) を参照してください。
414 +
415 + ### `deploy setup`
416 +
417 + すでに Local-first で公開している Site に、GitHub Actions による継続デプロイを追加します。
418 +
419 + ```sh id="k4n8ws"
420 + npm exec riebeckite deploy setup
421 + ```
422 +
423 + `deploy setup` は、Git Repository と GitHub Remote を検出し、GitHub CLI(`gh`)と Wrangler のログインを確認し、`create-riebeckite` と同じテンプレートから `.github/workflows/deploy.yml` を作成します。Wrangler のログイン状態から Cloudflare Account を取得し、複数ある場合は選択します。最後に `CLOUDFLARE_ACCOUNT_ID` と `CLOUDFLARE_API_TOKEN` を Repository Secret として登録します。
424 +
425 + Token は hidden prompt、または non-interactive 用の環境変数 `CLOUDFLARE_API_TOKEN` から読み取り、standard input 経由で `gh secret set` へ渡します。command line の引数には載せず、ファイルにも書き込みません。
426 +
427 + GitHub Repository の作成と push は行いません。Riebeckite 以外の既存 workflow を検出した場合は、上書きせずそのまま報告し、secret の登録には進まずに停止します。再実行すると、一致する workflow と登録済みの secret は検出され、残りの手順だけを実行します。別の deployment workflow が既にある場合は、置き換えるか削除してから再実行してください。
428 +
429 + `deploy setup` は Wrangler のログインを使うため、Wrangler の依存が Site に install されている必要があります。`create-riebeckite` で `Cloudflare Workers` を選んだ Site には含まれています。
430 +
431 + ### `deploy domain`
432 +
433 + `deploy` が公開する Worker に Cloudflare Workers の Custom Domain を設定します。
434 +
435 + ```sh id="d0main"
436 + npm exec riebeckite deploy domain
437 + ```
438 +
439 + `deploy domain` は Site の Wrangler 設定(`wrangler.jsonc` または `wrangler.json`)を読み、`custom_domain: true` を持つ `routes` エントリを追加します。引数は取りません。`docs.example.com` のような hostname を対話的に入力し、変更内容を表示して確認したうえで書き込みます。
440 +
441 + 初回の `deploy` の後で実行してください。Wrangler 設定が無い場合や terminal が interactive でない場合は、hint を表示して停止します。`wrangler.toml` は変更しません。書き込み後は `Deploy now?` を確認し、選ばなかった場合は `npm exec riebeckite deploy` を案内します。再実行すると設定済みの domain を検出し、書き込みを省略します。
442 +
443 + ## `profile`
444 +
445 + Build のどこに時間がかかっているか調査します。
446 +
447 + ```sh id="5pvcmf"
448 + npm exec riebeckite profile
449 + ```
450 +
451 + Trace を収集し、Build phase や Plugin 処理などの performance report を表示します。
452 +
453 + incremental reuse を避けて計測する場合は、
454 +
455 + ```sh id="mqr87f"
456 + npm exec -- riebeckite profile --full
457 + ```
458 +
459 + を使用します。
460 +
461 + `profile` は性能調査のための command であり、Configuration validity を確認するための command ではありません。
462 +
463 + report では Plugin cache と Content cache を分けて表示します。Content cache には miss / bypass の理由も含まれるため、なぜ再利用されなかったのかを確認できます。
464 +
465 + ## `inspect`
466 +
467 + Riebeckite が現在認識している状態を確認します。
468 +
469 + ```sh id="enl4wg"
470 + npm exec riebeckite inspect plugins
471 + ```
472 +
473 + Inspector は **read-only** です。
474 +
475 + 実行しても、
476 +
477 + - Build
478 + - Build State の書き込み
479 + - Plugin Cache の書き込み
480 + - Asset emission
481 + - Vite / HonoX Build
482 + - Artifact render
483 + - Config の自動修正
484 +
485 + を行いません。
486 +
487 + ### Config
488 +
489 + ```sh id="c3x2ak"
490 + npm exec riebeckite inspect config
491 + ```
492 +
493 + 解決済みの Configuration を確認します。
494 +
495 + ### Plugins
496 +
497 + ```sh id="wnn5fz"
498 + npm exec riebeckite inspect plugins
499 + ```
500 +
501 + 現在有効な Plugin を確認します。
502 +
503 + ### Content
504 +
505 + ```sh id="qqht5s"
506 + npm exec -- riebeckite inspect content --list
507 + ```
508 +
509 + 現在の Content entry と解決済みの canonical permalink などを確認します。
510 +
511 + 特定の記事がどの URL として認識されているか確認したい場合に便利です。
512 +
513 + ### Graph
514 +
515 + ```sh id="s8q7lx"
516 + npm exec riebeckite inspect graph
517 + ```
518 +
519 + Content Graph を確認します。
520 +
521 + WikiLink、backlink、graph extension などを調査するときに利用できます。
522 +
523 + ### Build
524 +
525 + ```sh id="y2uc9f"
526 + npm exec riebeckite inspect build
527 + ```
528 +
529 + 現在の incremental Build State を確認します。
530 +
531 + State が存在しない場合や壊れている場合も、新しい state を生成せず、その状態と理由を表示します。
532 +
533 + Inspector の詳しい設計については [Inspector](../framework/inspector.md) を参照してください。
534 +
535 + ## Error の表示
536 +
537 + CLI command が失敗した場合は、可能な範囲で構造化されたエラー情報を表示します。
538 +
539 + 主に、
540 +
541 + - Error 名
542 + - Message
543 + - Error code
544 + - File path
545 + - 修正方法の hint
546 +
547 + などです。
548 +
549 + 原因となった error がネストしている場合は、
550 +
551 + ```text id="bf6q65"
552 + Caused by:
553 + ```
554 +
555 + として表示されます。
556 +
557 + 単に「失敗した」と表示するのではなく、**何が失敗し、どこを確認すればよいか**が分かることを目標としています。
558 +
559 + ## 通常の Workflow
560 +
561 + 新しく Site を作る場合は、次のような流れになります。
562 +
563 + ```mermaid id="gr7mks"
564 + flowchart LR
565 + Init["init"]
566 + Install["npm install"]
567 + Check["check"]
568 + Dev["dev"]
569 + Build["build"]
570 + Deploy["deploy"]
571 +
572 + Init --> Install
573 + Install --> Check
574 + Check --> Dev
575 + Dev --> Build
576 + Build --> Deploy
577 + ```
578 +
579 + `build` の後は `npm exec riebeckite deploy` で生成物を公開できます。
580 +
581 + 問題が発生した場合は、目的に応じて `doctor`、`inspect`、`profile` を使います。
582 +
583 + ```mermaid id="9g1nvs"
584 + flowchart TD
585 + Problem{"問題がある"}
586 +
587 + Problem -->|"設定がおかしい?"| Check["check"]
588 + Problem -->|"原因が分からない"| Doctor["doctor"]
589 + Problem -->|"解決結果を確認したい"| Inspect["inspect"]
590 + Problem -->|"Buildが遅い"| Profile["profile"]
591 + Problem -->|"Incrementalを疑う"| Full["build --full"]
592 + ```
593 +
594 + 迷った場合は、
595 +
596 + **作るなら `init`、開発するなら `dev`、検証するなら `check`、診断するなら `doctor`、見るだけなら `inspect`、生成するなら `build`、公開するなら `deploy`、速度を調べるなら `profile`、状態を消すなら `clean`**
597 +
598 + と覚えておくと、各 command の役割を区別しやすくなります。
599 +
600 + 診断結果については [Diagnostics](../framework/diagnostics.md)、非推奨 API からの移行については [Upgrading](../guides/upgrading.md)、Build State については [Build System](../framework/build-system.md) を参照してください。
601 +