25 lines
766 B
TypeScript
25 lines
766 B
TypeScript
// src/content.config.ts
|
|
import { defineCollection, z } from 'astro:content';
|
|
import { glob } from 'astro/loaders';
|
|
|
|
const posts = defineCollection({
|
|
// Usa el loader "glob" para buscar archivos .md en la carpeta indicada.
|
|
loader: glob({ pattern: '**/*.mdx', base: './src/posts' }),
|
|
// Define un esquema para validar el frontmatter de cada post
|
|
schema: z.object({
|
|
titulo: z.string(),
|
|
descripcion: z.string(),
|
|
fecha: z.coerce.date(),
|
|
autor: z.string(),
|
|
imagen: z.string().optional()
|
|
}).passthrough(),
|
|
computedFields: {
|
|
url: {
|
|
type: 'string',
|
|
resolve: (entry) => `${entry}` // Genera la URL usando el slug calculado de cada post.
|
|
}
|
|
}
|
|
});
|
|
|
|
// Exporta las colecciones definidas
|
|
export const collections = { posts }; |