Saltar al contenido HtmlpressGenerador de sitios estáticos HtmlpressGenerador de sitios estáticos

Cambiar tema

Atajos de teclado

Hugo vs Htmlpress

Actualizado el

Hugo es un generador de sitios estáticos de propósito general escrito en Go. Se distribuye como un único binario, compila extremadamente rápido y sirve para todo, desde blogs y portafolios hasta sitios de documentación mediante temas de la comunidad como Docsy y Hugo Book.

De un vistazo

Aspecto Htmlpress Hugo
Lenguaje / runtime Rust (binario único, sin runtime) Go (binario único, sin runtime)
Framework de UI Ninguno (HTML + CSS plano, web components htmlpress-*) Plantillas de Go (HTML + CSS)
Herramienta de compilación Binario de htmlpress Binario de Hugo
Formato de contenido Páginas HTML y Markdown Markdown con shortcodes de Hugo
Licencia MIT, autoalojado Apache-2.0, autoalojado
Modelo de salida Estático prerenderizado Estático prerenderizado

Arquitectura

htmlpress es un único binario de Rust que se instala desde npm (gethtmlpress), PyPI o crates.io. Envuelve cada página HTML en un layout con una navegación y un tema; no hay bundler, ni framework de UI, ni API de plugins. Cada archivo integrado (el layout, los estilos, los scripts y cada componente) se puede escapar: un archivo en la misma ruta bajo .htmlpress/ lo reemplaza.

Hugo es un único binario de Go: sin dependencias de runtime ni paso de instalación de paquetes. La estructura del sitio se basa en convenciones: content/, layouts/, static/, themes/, config.toml (o .yaml/.json). Los layouts usan la sintaxis html/template de Go. Los temas se añaden como submódulos de git o se copian en themes/<name>/. El layout de htmlpress es HTML plano sin sintaxis de plantillas: el binario rellena sus elementos de marcador htmlpress-*.

Hugo no es específico para documentación. El mismo binario impulsa blogs, sitios de marketing, portafolios y docs: el caso de uso de documentación se cubre mediante temas, no con tipos de sección de primera clase.

En htmlpress la disposición del contenido no tiene restricciones: escanea por glob (include/exclude en htmlpress.yaml, todos los archivos .html por defecto), y la URL de una página sigue su ruta de archivo bajo la base del glob, así que docs/**/*.html sirve docs/guide.html en /guide/. No hace falta una carpeta docs/. La navegación se construye a partir de las carpetas y del <meta name="order"> de cada página; el index.html de una carpeta da nombre a su grupo. Hugo lee de content/, con una estructura de URLs que refleja el árbol de directorios (y overrides de frontmatter por sección).

Superficie de contenido

Hugo acepta Markdown con frontmatter; htmlpress acepta por igual páginas HTML y Markdown con frontmatter.

Hugo incrusta componentes con shortcodes: funciones con plantillas de Go que se invocan desde Markdown con {{< shortcode-name arg="value" >}}. Los shortcodes se definen en layouts/shortcodes/*.html como fragmentos de plantilla de Go y emiten HTML directamente. El equivalente más cercano en htmlpress es un componente del proyecto: .htmlpress/components/<name>/<name>.html rellena cada <htmlpress-<name>> en tiempo de compilación.

Hugo admite extensiones de Markdown basadas en Goldmark (notas al pie, tablas, listas de definiciones, matemáticas mediante plugins). Para una interactividad más rica, el patrón habitual es incrustar un <script> o usar un framework de JS como isla dentro de un shortcode.

Las páginas de htmlpress son HTML semántico plano, al que el tema da estilo a partir de los propios elementos. Los bloques más ricos son elementos personalizados htmlpress-* (htmlpress-callout, htmlpress-tabs, htmlpress-filetree, htmlpress-cards, …), cuyo CSS y JS se enlazan solo en las páginas que usan la etiqueta. Un proyecto añade su propia etiqueta con .htmlpress/components/<name>/<name>.html, que reemplaza la etiqueta en tiempo de compilación.

htmlpress no tiene frontmatter: los metadatos de una página son su propio <head> — <title>, <meta name="description">, <meta name="order">, <meta name="layout"> y <meta name="image">; las demás etiquetas de <head> se conservan. Hugo acepta frontmatter en TOML, YAML o JSON con campos como title, date, draft, weight, taxonomies, además de campos definidos por el usuario.

Matriz de funciones

Capacidad Htmlpress Hugo
Versionado Parcial (una sección o un despliegue por versión) No (manual mediante ramas/sitios)
Internacionalización (i18n) Sí (traducciones, selector de idioma, 7 idiomas de interfaz incluidos) Sí (integrada, modo multilingüe)
Búsqueda Sí (integrada, en el cliente) No (la aporta el tema o un servicio externo)
Blog No Sí (cualquier sección se puede ordenar por fecha)
Registro de cambios No No (manual)
Sitemap Sí (con site definido) Sí (integrado)
RSS No Sí (integrado, por sección)
Temas Escapes en .htmlpress/ + tokens --htmlpress-* Directorios de temas con overrides de plantillas
Plugins No (componentes del proyecto en .htmlpress/components/) Hugo Modules (Go), shortcodes, hooks
Rutas personalizadas Cualquier archivo .html; layouts adicionales en .htmlpress/layouts/ Layouts + secciones de contenido
Toolchain independiente Un único binario de Rust (npm, PyPI o crates.io) Un único binario de Go
Velocidad de compilación Binario nativo, sin bundler Entre los SSG más rápidos

Salida y despliegue

Ambas herramientas producen HTML estático + recursos listos para cualquier hosting estático. Hugo emite en public/ por defecto; htmlpress emite en .htmlpress/build/.

htmlpress escribe cada página como HTML estático en .htmlpress/build/, junto con robots.txt, un sitemap.xml cuando site está definido, una copia en Markdown de cada página, llms.txt y las skills para agentes en .well-known/agent-skills/. La clave base sirve el sitio bajo una subruta. Consulta Despliegue para ver guías por hosting.

Ver también

Hecho con ❤ y Htmlpress

Acciones

Editar en GitHubVer como Markdown

Contenido