Content Collections で記事を型安全に管理する

(更新:

Content Collections とは

src/content/ 配下の Markdown を コレクション としてまとめ、 フロントマター(記事冒頭の --- で囲んだメタ情報)を Zod スキーマで検証できる仕組みです。

スキーマ定義

const blog = defineCollection({
  loader: glob({ pattern: "**/*.md", base: "./src/content/blog" }),
  schema: z.object({
    title: z.string(),
    pubDate: z.coerce.date(),
    tags: z.array(z.string()).default([]),
  }),
});

スキーマに違反する記事はビルド時にエラーになるため、 「日付を書き忘れた」「タグの型が違う」といったミスを早期に防げます。

記事の取得

const posts = await getCollection("blog");

これだけで全記事のデータ(型付き)が手に入ります。