Astro Starlightのスキーマはextendで拡張可能
This content is a draft and will not be included in production builds.
Starlightインテグレーションのコンテンツは必ず content/docs/ 以下に置かなければならない制約がある。それは手動セットアップ | Starlightに書いてある。
Starlightのすべてのページをサブパスに追加するには、ドキュメントのコンテンツをsrc/content/docs/ のサブディレクトリに配置します。たとえば、Starlightのページがすべて /guides/ で始まる場合は、コンテンツを src/content/docs/guides/ ディレクトリに追加します。
将来的には、src/content/docs/ 内にネストされたディレクトリを必要としないよう、このユースケースに対するサポートを改善する予定です。
Obsidianのノートを公開するとき、コンテンツコレクションの型をどうするか。ノートで使っているフロントマターの型と、Starlightインテグレーションが用意している型は(一部は重複するが)異なっている。それをどうやって表現するのか。
他のコレクションが存在しないなら、extend を使えば任意のパラメータを追加したり、既存のルールを上書きできる。
import { z, defineCollection } from 'astro:content';import { docsSchema } from '@astrojs/starlight/schema';
export const collections = { docs: defineCollection({ schema: docsSchema({ extend: z.object({ tags: z.array(z.string()).nullable(), draft: z.boolean(), kind: z.string(), }), }), }),};