Documentación · Guías
Migrar desde Eleventy
Qué se traduce casi tal cual, qué cambia de nombre y qué no tiene equivalente, y cómo comprobar que el sitio nuevo sale como el viejo.
Versión 0.16
Pasar de Eleventy a Ehundu es una migración corta, porque los dos siguen el mismo modelo: Markdown con front matter, datos por carpeta, colecciones por etiqueta. Lo que cambia es el motor de plantillas, de Nunjucks a Twig, y que cada cosa tiene su carpeta. Premium Dental Clinics pasó así: al compilar el original y el nuevo, 360 de los 388 ficheros salieron idénticos, y los otros 28 tenían una explicación.
Lo que se traduce casi tal cual¶
| En Eleventy | En Ehundu |
|---|---|
| Las páginas en Markdown | contenido/, con la misma ruta y el mismo front matter |
title, date, tags, layout, permalink |
Valen como alias de titulo, fecha, etiquetas, plantilla y url: no hace falta reescribir el front matter |
_data/*.json |
datos/, que acepta .yml y .json |
*.11tydata.js o .json de una carpeta |
Un _datos.yml en esa carpeta, con la misma herencia |
collections.blog |
coleccion('blog'), con los filtros orden, invertir y limite |
permalink: /{{ title | slugify }}/ |
url: /{{ titulo|slug }}/ |
| La carpeta que se copia tal cual | publico/ |
| El plugin de bundle de CSS y JS | css() y js(), que declaran lo que necesita cada plantilla |
| La paginación | paginar en el front matter; y agrupar para una página por etiqueta |
Un campo que falta sale vacío, como en Nunjucks, así que {% if pagina.imagen %} sigue valiendo. Lo que en Eleventy era collections.blog | reverse | head(6) es aquí coleccion('blog')|invertir|limite(6).
Lo que hay que reescribir¶
Las plantillas. Pasan de Nunjucks (o de Liquid) a Twig, que se parece mucho: los {% for %}, los {% if %}, los {% extends %} y los {% include %} casi no cambian. Las plantillas, los parciales y los datos de otros generadores (.njk, .liquid, .11tydata.js) no se copian nunca a la salida, y Ehundu avisa de cada uno que encuentra, para que no se quede ninguno por el camino.
Los atajos. Un shortcode de Eleventy escrito en JavaScript no tiene equivalente, porque Ehundu no ejecuta código del sitio. Lo que hacía se resuelve con un parcial de Twig, y las imágenes, los vídeos y los archivos dentro del Markdown, con los atajos imagen, video y archivo, que son un vocabulario cerrado. La guía Plantillas y atajos los explica.
Las imágenes procesadas. Ehundu no procesa imágenes: copia lo que hay en publico/. Si el original generaba variantes con eleventy-img, copia las que salieron de la compilación del original y describe en un fichero de datos qué variantes tiene cada imagen. Una plantilla pinta el <picture> y lee con dimensiones() el ancho y el alto de cada fichero.
Lo que cambia sin avisar¶
Son pocas cosas, pero conviene saberlas antes de comparar.
- El
slug. Para los títulos habituales en español da lo mismo queslugify. Difiere en la diéresis (bilingüedabilingueeen Eleventy), en&, en€y en el apóstrofo. Las páginas afectadas conservan su dirección con unurlexplícito. - El orden sin fecha. Eleventy da a una página sin fecha la de creación del fichero, que cambia de una máquina a otra. Ehundu las deja al final, por ruta, para que el resultado sea el mismo en cualquier ordenador.
- Los párrafos sangrados. Eleventy desactiva los bloques de código sangrados; Ehundu sigue CommonMark. Un párrafo que empieza con cuatro espacios tras una línea en blanco es aquí un bloque de código, así que al migrar se quita la sangría.
- Los enlaces. Una dirección web o de correo escrita tal cual en el Markdown es un enlace.
- El nombre de la plantilla.
layout: postvale como alias, perolayout: post.njkno:plantillaes el nombre de una plantilla de Ehundu, sin extensión. El error te dice cómo quedaría.
Cómo comprobar que sale igual¶
Compila el original con su propio Eleventy sobre una copia, no con el _site que tengas a mano: suele traer restos de compilaciones antiguas. Compila después el sitio migrado y compara los dos HTML, normalizando los espacios en blanco. Cualquier comparador sirve. Lo importante es que cada diferencia que quede tenga una explicación.
Salen a la luz los fallos del original, y conviene corregirlos en la migración en lugar de reproducirlos. En Premium Dental, el sitemap.xml y el robots.txt salían envueltos en una página HTML, con su cabecera y su menú, y las fichas de los dentistas no tenían título. El sitio nuevo los tiene bien.
Cuando todo cuadre, despliega primero a una dirección de pruebas, repasa las páginas y cambia el dominio al final. La guía Desplegar el sitio cuenta cómo.