Ir al contenido
Código en GitHub (se abre en una pestaña nueva)

Versión 1.1 (se abre en una pestaña nueva) · primera versión estable

Teje sitios estáticos con PHP.

Ehundu convierte Markdown, datos en YAML y plantillas Twig en un sitio de HTML plano. Desde la terminal o desde un proceso web, en cualquier alojamiento que ejecute PHP.

Primeros pasos Ver el código (se abre en una pestaña nueva)

composer require ehundu/ehundu


Cómo funciona

Una carpeta entra, un sitio sale.

  1. Escribe

    Cada página es un Markdown con un front matter corto. Lo que comparten todas las de una carpeta, como su etiqueta o el patrón de su URL, se escribe una sola vez en su _datos.yml.

    estructura
    mi-sitio/
      sitio.yml
      contenido/
        index.md
        blog/
          _datos.yml
          primer-articulo.md
      plantillas/
        pagina.twig
      publico/
        img/
          portada.jpg
  2. Compón

    Las plantillas son Twig, con colecciones y fechas en el idioma de cada página. Los atajos insertan imágenes, vídeos o documentos sin escribir HTML en el texto.

    blog/primer-articulo.md
    ---
    titulo: Primer artículo
    fecha: 2026-10-01
    ---
    
    Texto del artículo en **Markdown**.
    
    [imagen fichero="img/portada.jpg" alt="La portada"]
  3. Publica

    Una orden compila el sitio en HTML plano y otra lo sube a una carpeta, por FTP, por SFTP o a un almacenamiento compatible con S3. Solo sube lo que ha cambiado.

    terminal
    $ ehundu compilar mi-sitioCompilado: 2 páginas y 1 fichero en 0,09 s. $ ehundu desplegar mi-sitioCompilado: 2 páginas y 1 fichero en 0,07 s.  subido    img/portada.jpg  subido    blog/primer-articulo/index.html  subido    index.html  subido    sitemap.xmlDesplegado en sftp://yo@ejemplo.com/www: 4 ficheros (16 kB) subidos en 0,62 s.

Andamios

Empieza con la estructura ya montada.

Ocho proyectos de Ehundu con sus carpetas, sus plantillas y su CSS ya hechos, para copiar y cambiar: un sitio mínimo, un blog, una documentación, un portfolio, un negocio local, una web en castellano y euskera, la de un evento y un currículum. Cada uno tiene su demo en línea, para verlo funcionando antes de descargar nada.

Ver los andamios

Lo que lo hace distinto

Compila también desde la web.

Los generadores habituales están pensados para la línea de comandos. En Ehundu, la orden de consola es una capa fina sobre una biblioteca, y un programa PHP puede usar esa misma biblioteca para compilar el sitio dentro de una petición web, en un alojamiento compartido corriente.

Así, una herramienta de edición puede guardar un cambio y publicar el sitio al momento. Y quien prefiera su editor de texto obtiene exactamente el mismo resultado desde la terminal. Los errores y los avisos están en español y señalan el fichero y la línea, para enseñarlos tal cual.

publicar.php
use Ehundu\CompiladorEnProceso;
use Ehundu\Proyecto;

$proyecto = Proyecto::abrir('/ruta/a/mi-sitio');
$informe = (new CompiladorEnProceso())->compilar($proyecto);

echo $informe->resumen();
// Compilado: 2 páginas y 1 fichero en 0,09 s.

foreach ($informe->avisos as $aviso) {
    echo $aviso; // con su fichero y su línea
}

Principios

Pocas piezas, todas tuyas.

  • PHP puro

    Funciona con PHP 8.4 o superior y no necesita ejecutar programas externos ni extensiones poco habituales. Si un alojamiento ejecuta PHP, puede ejecutar Ehundu.

  • Tu contenido son ficheros

    Markdown, YAML, plantillas y archivos estáticos. Sin base de datos y sin estado oculto; una carpeta copiada a otra máquina compila igual.

  • Sin depender de servicios

    Se apoya en software libre que se puede conservar y mantener, nunca en servicios cuyas condiciones pueden cambiar de un día para otro. Publica sin APIs propias de ningún proveedor.

  • En español

    Las carpetas se llaman contenido, plantillas o publico, y los campos titulo, fecha o etiquetas. La comunidad hispanohablante que hace la web merece herramientas pensadas en su idioma.


Nidel, un perro color canela con las orejas de punta y la lengua fuera, con el hilo de una aguja atado al collar rojo.

El nombre

Una aguja en un pajar.

Ehundu significa «tejer» en euskera. No es casual: web, en inglés, es literalmente un tejido, y un generador de sitios hace eso mismo, entrelazar contenido y plantillas hasta formar páginas.

Se pronuncia más o menos «e-ún-du».

La aguja del logotipo también tiene nombre. Nidel estaba en un pajar el día que lo adopté, y su nombre suena a needle, «aguja» en inglés. Fue, literalmente, encontrar una aguja en un pajar.

Estado del proyecto

Hilo a hilo.

Ehundu ya compila, previsualiza y publica sitios reales, también en varios idiomas. Desde la 1.0 el contrato es una promesa y no un borrador, y cada decisión queda anotada, con su motivo, en el registro de decisiones.

Ahora

La 1.1

Promete el formato (formato: 1), la orden de consola y una lista corta de la biblioteca PHP. Dentro de la versión 1 solo crece.

Escribir

  • Markdown, datos y plantillas Twig, con atajos
  • Una página por cada etiqueta
  • Listas largas partidas en páginas
  • Páginas de una carpeta sin la carpeta en la URL
  • id y enlace permanente en los encabezados
  • Orden alfabético que no cuenta ¿ ni ¡

Idiomas y salida

  • Sitios en varios idiomas, con título de feed por idioma
  • PDF de las páginas que lo piden
  • srcset de las imágenes con varios anchos
  • Las variantes de ancho de las imágenes, con la orden ehundu imagenes
  • CSS y JavaScript de cada página, con la huella en el nombre
  • Aviso a los lectores de pantalla en los enlaces que abren otra pestaña
  • Etiqueta generator en las páginas

Publicar

  • Previsualización que rehace solo lo que cambia
  • Despliegue a una carpeta, por FTP, SFTP o a S3
  • Entradas que salen el día que toca y se retiran cuando acaba su plazo

Dentro de un proceso web

  • Compilación y subida repartidas en varias llamadas, para procesos con límite de tiempo
  • Compilación incremental que recuerda lo hecho entre un proceso y otro

Después

La 1.x

Todo lo que se añada dentro de la versión 1 será aditivo, por la regla 5 del contrato. Un proyecto escrito hoy compilará igual mañana, y lo que vaya a dejar de valer se avisa durante una versión menor antes de quitarse.

Más adelante

Lo que crece

Componentes con parámetros, recortar las imágenes a una proporción y búsqueda. El formato ya deja sitio para todo ello, y puede llegar dentro de la versión 1 porque solo crece.