Hugo + Tailwind CSS
Paso a paso de cómo integrar Tailwind CSS (con PostCSS) a un proyecto en Hugo.
Hugo Extended
Vamos a necesitar la versión extended de Hugo. Esta versión incluye soporte para Hugo Pipes, que es una manera que nos ofrece Hugo para procesar assets, imágenes, y código JS.
Hay muchas formas de instalar Hugo. Una posibilidad es desde github, para la release de una versión particular (por ejemplo v0.86.0) la descarga _extended_ que corresponda con nuestro OS.
En mi caso la versón sería hugo_extended_0.86.0_Linux-64bit.deb
Teniendo Hugo instalado, podemos crear un proyecto nuevo:
hugo new site hugo-tailwind-example
cd hugo-tailwind-example
Instalación de Dependencias
Dentro del nuevo proyecto Hugo inicializamos NPM, para poder instalar algunas dependencias.
npm init -y
npm install tailwindcss postcss postcss-cli autoprefixer
Configuración de Tailwind
Inicializamos tailwind, creando un archivo postcss.config.js
y otro tailwind.config.js
. Hay un comando que se encarga de crear ambos archivos:
npx tailwind init -p
La configuración de PostCSS debería quedar sin cambios:
// postcss.config.js
module.exports = {
plugins: {
tailwindcss: {},
autoprefixer: {},
}
}
A la configuración de Tailwind le agregamos lo necesario para purge
:
// tailwind.config.js
module.exports = {
purge: {
enabled: process.env.HUGO_ENVIRONMENT === "production",
content: [
"./layouts/**/*.html",
"./content/**/*.md",
],
},
// ...
}
Layout en Hugo
Una vez configurado todo, podemos empezar a escribir los los estilos y layouts necesarios.
assets/style.css
:
@tailwind base;
@tailwind components;
@tailwind utilities;
layouts/_default/baseof.html
:
<!DOCTYPE html>
<html lang="{{ .Language.Lang }}">
<head>
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
{{ $styles := resources.Get "style.css" | postCSS }}
{{ if .Site.IsServer }}
<link rel="stylesheet" href="{{ $styles.RelPermalink | safeURL }}"/>
{{ else }}
{{ $styles := $styles | minify | fingerprint | resources.PostProcess }}
<link rel="stylesheet" href="{{ $styles.RelPermalink | safeURL }}" integrity="{{ $styles.Data.Integrity }}"/>
{{ end }}
</head>
<body>
{{ block "main" . }}{{ end }}
</body>
</html>
layouts/index.html
:
{{ define "main" }}
<main class="container mx-auto my-24 px-4 py-24 bg-gray-700 text-center rounded shadow-md">
<h1 class="text-3xl font-bold text-gray-50">Hugo con Tailwind!</h1>
</main>
{{ end }}
Si todo lo anterior funcionó correctamente, al ejecutar hugo server
, deberíamos ver el sitio funcionando:
hugo server
Cargando Comentarios
Error
Hubo un error cargando los comentarios.
No hay comentarios
Podés ser el primero en dejar un comentario.
Agregar Comentario
Tu dirección de email no será publicada. Los comentarios son revisados de forma manual antes de ser aprobados y publicados.