// статья
Astro Content Collections: типобезопасный контент
Как использовать Content Collections в Astro 5 для управления Markdown-контентом с валидацией через Zod-схемы.
Что такое Content Collections?
Content Collections — это способ организации контента в Astro с автоматической валидацией frontmatter через Zod-схемы. Это даёт типобезопасность и автокомплит при работе с контентом.
Настройка
Создайте файл src/content.config.ts:
import { defineCollection, z } from 'astro:content';
import { glob } from 'astro/loaders';
const blog = defineCollection({
loader: glob({ pattern: '**/*.md', base: './src/content/blog' }),
schema: z.object({
title: z.string(),
description: z.string(),
pubDate: z.coerce.date(),
tags: z.array(z.string()).default([]),
draft: z.boolean().default(false),
}),
});
export const collections = { blog };
Запрос контента
---
import { getCollection } from 'astro:content';
const posts = await getCollection('blog', ({ data }) => {
return !data.draft;
});
---
Рендеринг
---
const { Content } = await render(post);
---
<Content />
Преимущества
- Типобезопасность — ошибки в frontmatter ловятся на этапе сборки
- Автокомплит — IDE подсказывает доступные поля
- Валидация — Zod проверяет данные автоматически
- Гибкость — поддержка Markdown, MDX, JSON, YAML