meta export
meta エクスポートでページごとの head メタデータを宣言します。
パターン
すべてのページモジュールは、ページごとのメタデータ(タイトル、説明、レイアウトの上書き)を記述する meta 定数(または同じレコードを返す async 関数)をエクスポートできます。ビルドはこのエクスポートを読み取り、型付きレコードとしてパースし(crates/)、ページをラップするレイアウトモジュールを解決します。レンダラ自体は <head> タグを出力しません。レイアウトコンポーネントが <head> を所有し、受け取った値を使って何をレンダリングするかを決定します。
例
export const meta = {
title: "Blog — My Site",
description: "Latest writing on web development.",
};
export default function BlogPage() {
return <article>{/* ... */}</article>;
}meta を計算するためにコレクションや async ソースからのデータが必要な場合(例: CMS フィールドから導出するタイトル)は、meta を async 関数としてエクスポートします。レンダラはページシェルをレンダリングする前にそれを await します。
export async function meta() {
const post = getCollection("blog")[0];
return {
title: post.data.title,
description: post.data.description,
};
}サポートされるキー
PageMeta は以下のキーのみを受け付けます。未知のキーはパース時に 拒否される(deny_unknown_fields)ため、タイプミスは黙って捨てられるのではなくビルドエラーとして表面化します。
title?: string— このページについてレイアウトのデフォルトを上書きします。description?: string— レイアウトコンポーネントに渡され、コンポーネントが<meta name="description">タグを出力するかどうかを決定します。バンドルされているデフォルトレイアウトは現在これを出力しません。layout?: string— ページレイアウトコンポーネントのモジュール specifier(相対パスまたはベア specifier)。指定がない場合はプロジェクトのデフォルトレイアウトが使われます。
Note
正規 URL、Open Graph、Twitter Card タグは PageMeta の一部ではありません。meta から <head> への出力パイプラインは存在せず(<head> はレイアウトが所有します)、これらのタグを追加するにはレイアウトコンポーネントで直接注入するか、ビルド時プラグインを使って <head> コンテンツを出力してください。