Versión 0.3 · el formato puede cambiar hasta la 1.0
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.
composer require ehundu/ehundu
Cómo funciona
Una carpeta entra, un sitio sale.
-
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 -
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"] -
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.
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.
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.
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.
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.
Se pronuncia más o menos «e-ún-du».
Estado del proyecto
Hilo a hilo.
Ehundu ya compila, previsualiza y publica sitios reales, también en varios idiomas. Hasta la 1.0 el formato todavía puede cambiar, y cada cambio queda anotado, con su motivo, en el registro de decisiones.
-
Ahora
La 0.3
Markdown, datos y plantillas Twig, atajos, previsualización que rehace solo lo que cambia, despliegue a una carpeta, por FTP, SFTP o a S3, y sitios en varios idiomas.
-
Después
La 1.0
El formato cerrado, para que ningún cambio posterior obligue a tocar los sitios hechos, y la compilación por lotes para los procesos web con límite de tiempo.
-
Más adelante
Lo que crece
Componentes con parámetros, imágenes en varios tamaños, paginación de listados y búsqueda. El formato ya deja sitio para todo ello.