Cómo integrar Tailwind CSS en un proyecto Astro usando astro add
Introducción
En los últimos años Astro se ha convertido en una de las opciones más populares para crear sitios estáticos y aplicaciones web ligeras. Su filosofía basada en "componentes sin JavaScript por defecto" permite generar páginas ultra‑rápidas, pero al mismo tiempo no sacrifica la capacidad de usar herramientas modernas de UI. Tailwind CSS es el framework de utilidades que está rompiendo los esquemas de estilos: en lugar de escribir CSS tradicional, componés la UI directamente con clases predefinidas.
Este artículo está dirigido a desarrolladores front‑end que ya tienen conocimientos básicos de Astro (estructura de proyecto, componentes .astro) y quieren añadir Tailwind de forma automática mediante el comando astro add. Verás paso a paso cómo hacerlo, cómo configurar los archivos, y tendrás ejemplos de componentes y la salida esperada en el navegador.
Al finalizar vas a poder:
- Crear un proyecto Astro desde cero.
- Instalar y configurar Tailwind CSS con
astro add. - Usar clases de Tailwind en componentes
.astroy en archivos.css. - Ver la salida renderizada y entender cómo Astro optimiza el CSS.
1. Crear el proyecto Astro
Si todavía no tenés Astro instalado, lo podés hacer con npm init astro@latest o pnpm create astro. Para este tutorial usaremos npm.
npm init astro@latest tailwind-astro-demo
cd tailwind-astro-demo
npm installEsto genera la estructura típica:
├─ public/
├─ src/
│ ├─ components/
│ ├─ layouts/
│ └─ pages/
├─ astro.config.mjs
└─ package.json2. Añadir Tailwind CSS con astro add
Astro incluye un integrador de paquetes que simplifica la instalación de herramientas comunes. Ejecutá el siguiente comando:
npm run astro add tailwindLo que hace este comando es:
- Instalar
tailwindcss,postcssyautoprefixercomo dependencias dev. - Crear un archivo
tailwind.config.cjscon la configuración base. - Generar
src/styles/global.cssque importa las directivas de Tailwind (@tailwind base; @tailwind components; @tailwind utilities;). - Modificar
astro.config.mjspara que incluya el plugin de Tailwind.
Después de ejecutar, el árbol de proyecto se verá así:
├─ src/
│ ├─ styles/
│ │ └─ global.css ← nuevo
│ └─ pages/
│ └─ index.astro
├─ tailwind.config.cjs
└─ astro.config.mjs ← actualizado2.1 Verificación de la configuración
Abre tailwind.config.cjs. Debería contener algo como:
/** @type {import('tailwindcss').Config} */
module.exports = {
content: ["./src/**/*.{astro,html,js,jsx,ts,tsx}"] ,
theme: { extend: {} },
plugins: [],
};La clave content le indica a Tailwind que escanee todos los archivos dentro de src con esas extensiones para generar únicamente las clases usadas (purga automática).
3. Usar Tailwind en componentes Astro
3.1 Primer componente con Tailwind
Creemos un nuevo componente src/components/Card.astro que muestra una tarjeta con título, texto y botón.
---
const { title, description } = Astro.props;
---
<div class="max-w-sm rounded overflow-hidden shadow-lg bg-white">
<div class="px-6 py-4">
<div class="font-bold text-xl mb-2 text-gray-800">{title}</div>
<p class="text-gray-700 text-base">{description}</p>
</div>
<div class="px-6 pt-4 pb-2">
<button class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">
Saber más
</button>
</div>
</div>3.2 Incluir el componente en la página principal
Editá src/pages/index.astro para importar y usar la tarjeta.
---
import Card from "../components/Card.astro";
---
<html lang="es">
<head>
<meta charset="UTF-8" />
<title>Demo Tailwind + Astro</title>
<link rel="stylesheet" href="/src/styles/global.css" />
</head>
<body class="bg-gray-100 flex items-center justify-center min-h-screen">
<Card
title="Hola Mundo"
description="Esta es una tarjeta estilizada con Tailwind CSS dentro de Astro."
/>
</body>
</html>3.3 Salida esperada
Al levantar el servidor con npm run dev y abrir http://localhost:3000, deberías ver una tarjeta centrada, con sombra, título en negrita y un botón azul. El HTML que el navegador recibe (simplificado) es:
<div class="max-w-sm rounded overflow-hidden shadow-lg bg-white">
<div class="px-6 py-4">
<div class="font-bold text-xl mb-2 text-gray-800">Hola Mundo</div>
<p class="text-gray-700 text-base">Esta es una tarjeta estilizada con Tailwind CSS dentro de Astro.</p>
</div>
<div class="px-6 pt-4 pb-2">
<button class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">Saber más</button>
</div>
</div>Observá cómo no hay clases generadas a mano, solo utilidades de Tailwind. Además, como Astro hace tree‑shaking del CSS, en la hoja final sólo estarán presentes las clases usadas arriba.
4. Optimización y modo producción
Cuando ejecutás npm run build, Astro compila la app y Tailwind procesa global.css. El resultado es un archivo /_astro/_base.css que contiene menos de 2 KB (gzip) gracias a la purga de clases no utilizadas.
Puedes comprobarlo mirando el bundle con npm run preview o inspeccionando la red en DevTools.
5. Buenas prácticas y errores comunes
5.1 Buenas prácticas
- Mantener la configuración de
contentactualizada: si añadís carpetas externas (por ejemplosrc/lib), incluílas en el array. - Usar
@applycon moderación: si necesitás un conjunto de utilidades repetidas, crea una clase englobal.csscon@applypara mantener el HTML limpio. - Aprovechar los plugins de Tailwind: por ejemplo
@tailwindcss/formspara estilizar formularios sin escribir CSS extra. - Habilitar
darkMode: 'class'entailwind.config.cjssi planeás soportar modo oscuro y controlarlo desde Astro.
5.2 Errores frecuentes
| Error | Por qué ocurre | Cómo solucionarlo |
|---|---|---|
| Las clases de Tailwind no aparecen en la página | content no incluye la ruta del archivo que usa la clase |
Añadir la ruta correcta o usar ./src/**/*.{astro,js,ts} |
| El CSS sigue siendo muy grande en producción | No se ejecutó el build o faltó purge |
Ejecutar npm run build y asegurarse de que NODE_ENV=production |
| El botón no cambia de color al hacer hover | Falta hover: en la clase o el archivo CSS no está importado |
Verificar que <link rel="stylesheet" href="/src/styles/global.css"/> está en <head> |
| Conflict entre Tailwind y estilos globales | Ambas reglas usan la misma especificidad | Usar !important o estructurar los estilos con capas (@layer utilities) |
6. Extender Tailwind en Astro
Puedes personalizar la paleta de colores, fuentes y breakpoints editando tailwind.config.cjs.
module.exports = {
content: ["./src/**/*.{astro,js,ts,jsx,tsx}"] ,
theme: {
extend: {
colors: {
primary: "#1e40af",
secondary: "#64748b",
},
fontFamily: {
sans: ["Inter", "system-ui"],
},
},
},
plugins: [],
};Luego podés usar bg-primary o font-sans en cualquier componente.
Conclusión
Integrar Tailwind CSS en Astro mediante astro add tailwind es extremadamente sencillo y te brinda una hoja de estilos mínima y altamente optimizada. En el recorrido cubrimos:
- Creación del proyecto Astro.
- Instalación automática con
astro add. - Configuración y verificación de
tailwind.config.cjs. - Uso de utilidades de Tailwind en componentes
.astro. - Observación de la salida HTML y del bundle final.
- Buenas prácticas y solución de errores típicos.
Con esta base, podés seguir explorando la enorme colección de plugins de Tailwind (typography, forms, aspect‑ratio) y combinarlo con la potencia de Astro para construir sitios rápidos, modernos y altamente mantenibles.
Próximos pasos recomendados:
- Añadir
@tailwindcss/typographypara mejorar la presentación de contenido markdown. - Configurar modo oscuro y usar la clase
darken elhtmlroot. - Implementar un sistema de diseño (design system) usando
@applyy capas de Tailwind.
¡Manos a la obra y feliz codificación!
DUGLAS MORENO
Comentarios (0)
Sé el primero en comentar.