Astro
先日 v2 がリリースされ割とホットなのかなと思うので、このブログを Astro で書き換えようと着手している。
JS をできる限り排除できるのはやっぱり魅力的。
以下は着手している中での雑なメモ。
Astro の Content Collections
公式のドキュメントはこれ。
Content Collections
Content collections help organize your Markdown and type-check your frontmatter with schemas.
docs.astro.build
$ tree ./src/content
./src/content
├── config.ts
├── blog
│ ├── aaa.md
│ ├── bbb.md
│ ├── ccc.md
└── schemes.ts
こんな感じで ./src/content
配下に Markdown, MDX などのコンテンツを管理する Astro v2 で追加になった機能を使って実装してみている。./src/content/scheme.ts
では Markdown の frontmatter の型定義をするようにした。
ページ側で Markdown を読み込むのも非常に簡単で、以下のようにするだけで画面に表示できた。
---
import { getCollection } from "astro:content";
const allPosts = await getCollection("blog");
---