HUGO - sistema de gestión de contenidos estáticos (SGCE)

Estaba contento con docpad, pero el flujo de trabajo era un poco tedioso: visualizar los cambios toma más de 5 minutos.

Buscando en la red encontré que HUGO presume de ser el más rápido.

Migrar de docpad a HUGO

Los artículos docpad son compatibles con HUGO, pero se necesita entrecomillar las fechas…

# en todas las carpetas que contengan artículos
sed -i -e 's/date: \([0-9-]*\)$/date: "\1"/' *.md

…y renombrar los archivos:

# desde la carpeta superior
for f in $(find -name '*.html.md'); do mv "$f" "${f%.html.md}.md"; done

Generar un nuevo sitio

HUGO genera automáticamente los archivos necesarios para empezar con el comando:

hugo new site nombre-del-sitio

Antes de empezar

Pero antes de empezar, hay que generar el estilo de las páginas:

  • layouts/_default/single.html: genera las páginas individuales, y para que esto funcione bien debe ser una página válida que contiene la línea:

    {{ .Content }}
    
  • layouts/_default/list.html: genera listados de páginas individuales, también debe ser una página válida, que haga referencia a los artículos de alguna forma, por ejemplo:

    {{ range .Data.Pages }}<a href="{{ .Permalink }}">{{ .Title }}</a> {{ end }}
    

Temas

Me costó un poco entender cómo usar los temas. Aunque hay varios temas bonitos en el sitio oficial, la mayoría requiere varios pasos previos para funcionar, que son específicos para cada tema.

Los temas se hacen agregando páginas válidas en la carpeta themes/nombre-del-tema/layouts que se genera con el comando…

hugo new theme nombre-del-tema

…con los elementos que necesita dentro de themes/nombre-de-tema/static.

En mi opinión, los temas deberían tener lo necesario, para empezar a usarlos sin problemas.

Vayamos por partes

Una ventaja de hugo es que permite reutilizar partes del contenido web, si se guardan los pedacitos en el directorio layouts/partials/ y se utiliza en otro plantilla la función:

{{ partial "nombre-de-plantilla.html" . }}

El punto del final es importante porque con él se envían las variables de la página.

Poderes mágicos

Aunque dejar de usar un sistema de gestión de contenidos dinámicos (SGCD) puede sonar como un retroceso, con los SCGE se puede hacer casi todo lo que con los SCGD pero sin necesidad de una base de datos.

Si se necesita en algún momento un sistema de alta transaccionalidad, se enlaza un servicio aparte.

Para todo lo demás, existe Funciones de Hugo Card.

Referencias cruzadas

Para referenciar un artículo hecho en hugo o partes de él, se utiliza la función:

{{ < relref "/ruta/al/artículo.md#sección" >}}

Quitando el espacio entre {{ y <.

La sección se genera automáticamente de los encabezados, o se puede indicar directamente en markdown así:

# Encabezado{#referencia}
Tags// , , ,
More Reading