// статья

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