はじめる

はじめる

前提

  • MoonBit ツールチェーン (moon)

  • CLI として moon install mizchi/astra/cmd/astra または pnpm add -g @luna_ui/astra

npm ラッパーは、Node.js は入っているが MoonBit ツールチェーンが無い場合のために用意されています。どちらの経路でも $PATH には同じバイナリが入ります。

プロジェクト構成

Astra はコンテンツツリーを docs/ から読みます(astra.config.jsondocs_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 がディスクに書く内容は同一です。レンダラーが分裂しません。