Astro v5 Content Layer API の使い方 - 1. globローダー

[Astro]

[Content Layer API]

[フロントエンド]

Astro v5になって導入されたContent Layer APIの使い方シリーズその1です。

まずはAstro公式からデフォルトで提供されている glob ローダーを紹介します。

従来Astroではmarkdownファイルを自動で読み込んでいましたが、globローダーはこの処理をContentLayerAPI対応にしたものです。

v4からの変更点は content collection で type ではなく loader というオプションを使い、loaderglob ローダーを呼ぶだけです。

import { defineCollection, z } from 'astro:content';
import { glob } from 'astro/loaders';
const posts = defineCollection({
//type: 'content', // v4まで
loader: glob({pattern: '**/*.md', base: './src/blog'}), // v5以降
schema: z.object({
title: z.string(),
})
})

globローダーの引数には対象ファイルのパターン(pattern)と、ファイルのある場所のディレクトリ(base)をそれぞれ渡します。

複数のファイルパターンを指定する場合は pattern: ['**/*.md', '**/*.mdx'] のように配列で渡します。

デフォルトで提供されているローダーは globfile の2つがあり、globローダーを複数のファイルをまとめて読み込むのに使い、 file ローダーを単独ファイルの読み込みに使います。

以上が Content Layer API のデフォルトローダーの紹介でした。

次回はサードパーティローダーを紹介します。

useContextより簡単!2025年Reactの状態管理はTanStack Storeで決まり
Astro v5 Content Layer API の使い方 - 2. サードパーティローダー