はじめる
前提
MoonBit ツールチェーン (
moon)CLI として
moon install mizchi/astra/cmd/astraまたはpnpm add -g @luna_ui/astra
npm ラッパーは、Node.js は入っているが MoonBit ツールチェーンが無い場合のために用意されています。どちらの経路でも $PATH には同じバイナリが入ります。
プロジェクト構成
Astra はコンテンツツリーを docs/ から読みます(astra.config.json の docs_dir で変更可):
my-docs/
├── astra.config.json # 省略可。小規模なら無くても動く
├── docs/
│ ├── index.md # → /
│ └── guide/
│ ├── index.md # → /guide/
│ └── routing.md # → /guide/routing/
└── dist/ # → astra build の出力先(gitignore)
最小限の astra.config.json:
{
"title": "My Docs",
"docs_dir": "docs",
"output_dir": "dist"
}
省略したフィールドは @astra.SsgConfig::default() のデフォルト値が使われます。
最初のページ
docs/index.md:
---
title: ようこそ
---
# ようこそ
このページは Astra が描画しています。
frontmatter の title はページの <title> と、自動生成サイドバーの両方に反映されます。
ビルド
astra build --out ./dist
ミドルウェアが公開するすべての URL(Markdown ページ + バンドルアセット)をクロールし、各ページについて <out>/<url>/index.html を生成。アセットツリー (/assets/main.css、/scripts/loader.js など) も同じ <out>/ 直下に書き出されます。
dev サーバー
astra dev --port 7777
dev サーバーは build と同じ Middleware::handler() を経由するので、http://localhost:7777 でブラウザに表示される内容と、astra build がディスクに書く内容は同一です。レンダラーが分裂しません。
次
Mars にマウントする — 既存の Mars サーバーに組み込む
デプロイ — ビルド出力を配信する