Paso 1: Configura tu proyecto Astro
- Abre la consola de comandos en tu PC.
- Navega a la carpeta donde deseas crear tu proyecto, por ejemplo:
cd Escritorio- Ejecuta el siguiente comando para iniciar un nuevo proyecto con Astro:
npm create astro@latest- Sigue las instrucciones en pantalla para instalar las dependencias iniciales y configurar tu proyecto.
Paso 2: Configura el contenido de tu blog
- En la carpeta
srcde tu proyecto, crea una carpeta llamadacontent. Aquí almacenarás todos los artículos de tu blog. - Dentro de la carpeta
content, crea un archivoconfig.ts. Este archivo configurará las colecciones de datos (posts) que usará Astro en el blog.
En config.ts, coloca el siguiente código:
import { z, defineCollection } from "astro:content";
// Define una colección para los artículos del blog const postsCollection = defineCollection({ type: 'content', schema: z.object({ title: z.string(), pubDate: z.date(), description: z.string(), author: z.string(), image: z.object({ url: z.string(), alt: z.string() }), tags: z.array(z.string()) }) });
export const collections = { posts: postsCollection, };Paso 3: Crea tus artículos
-
En la carpeta
content, crea una subcarpeta para tus artículos, por ejemplo,posts. -
Dentro de esta subcarpeta, puedes crear tus artículos en formato
.mdo.mdx. Cada archivo de artículo debe incluir el contenido y los datos del esquema (title,pubDate,description, etc.) definidos enconfig.ts.Ejemplo de un archivo de artículo (
posts/primer-post.md):
--- title: "Mi primer artículo en Astro" pubDate: 2024-10-27 description: "Un artículo introductorio sobre cómo usar Astro." author: "Iván FX" image: url: "https://example.com/imagen.jpg" alt: "Descripción de la imagen" tags: ["Astro", "Blog"] ---
## Bienvenido a mi primer artículo ¡Este es el comienzo de un blog hecho con Astro!Paso 4: Configura tus rutas y plantillas
- En la carpeta
src/pages, crea una página para listar todos los posts, por ejemplo,blog.astro. - Dentro de
blog.astro, usa el siguiente código para cargar y mostrar los posts:
--- import { getCollection } from 'astro:content'; const posts = await getCollection('posts'); ---
<h1>Blog</h1> <ul> {posts.map((post) => ( <li key={post.slug}> <a href={`/blog/${post.slug}`}>{post.data.title}</a> <p>{post.data.description}</p> <small>{post.data.pubDate}</small> </li> ))} </ul>Paso 5: Configura una plantilla para cada post
- En
src/pages/blog, crea un archivo[slug].astroque servirá como plantilla individual para cada artículo. - Utiliza el siguiente código para cargar y mostrar el contenido de cada artículo:
--- import { getEntry } from 'astro:content'; const { slug } = Astro.params; const post = await getEntry('posts', slug); ---
<h1>{post.data.title}</h1> <img src={post.data.image.url} alt={post.data.image.alt} /> <p>{post.data.description}</p> <p>Autor: {post.data.author}</p> <p>Publicado en: {post.data.pubDate}</p>
<article> {post.content} </article>Paso 6: Estilos y finalización
- Aplica estilos CSS personalizados a tu blog o usa frameworks de estilo como TailwindCSS o Bootstrap para mejorar el diseño.
- Revisa y ajusta los detalles finales, y ¡ya tendrás tu blog listo para publicar!