Fumadocs vs Htmlpress
Fumadocs es un framework de documentación basado
en Next.js y construido en torno al App Router. Reparte las responsabilidades entre
paquetes separados: fumadocs-core (lógica headless),
fumadocs-ui (componentes de UI por defecto) y
fumadocs-mdx (cargador de la fuente de contenido).
De un vistazo
| Aspecto | Htmlpress | Fumadocs |
|---|---|---|
| Lenguaje / runtime | Rust (binario único, sin runtime) | TypeScript / Node 18+ |
| Framework de UI | Ninguno (HTML + CSS plano, web components htmlpress-*) |
React 18/19 (App Router de Next.js) |
| Herramienta de compilación | Binario de htmlpress | Next.js (Turbopack/Webpack) |
| Formato de contenido | Páginas HTML y Markdown | Markdown + MDX |
| Licencia | MIT, autoalojado | MIT, autoalojado |
| Modelo de salida | Estático prerenderizado | Estático o SSR (modos de Next.js) |
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.
Fumadocs da por hecho que ya tienes (o quieres) una aplicación Next.js. No es una
CLI autónoma: creas un proyecto Next, instalas los paquetes de Fumadocs y conectas
fumadocs-core y fumadocs-ui a tu App Router.
fumadocs-mdx lee el contenido de archivos .md/.mdx
y lo expone como objetos tipados.
La división en paquetes es intencionada: fumadocs-core expone hooks y
primitivas sin UI, de modo que los proyectos pueden cambiar
fumadocs-ui por una UI propia sin hacer un fork.
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. Fumadocs lee de un único directorio de contenido
configurado (definido en el plugin de fuente de fumadocs-mdx); las
rutas se derivan de las rutas de archivo bajo esa raíz.
Superficie de contenido
Fumadocs acepta Markdown + MDX con frontmatter y componentes de React incrustados.
Usa fumadocs-mdx (un cargador de MDX propio), que produce objetos de
contenido tipados en TypeScript con IntelliSense completo para el frontmatter. Los
componentes personalizados viven junto al código de tu aplicación Next.
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. Fumadocs usa frontmatter:
title, description, icon, full.
Matriz de funciones
| Capacidad | Htmlpress | Fumadocs |
|---|---|---|
| Versionado | Parcial (una sección o un despliegue por versión) | Parcial (mediante fuentes de contenido separadas) |
| Internacionalización (i18n) | Sí (traducciones, selector de idioma, 7 idiomas de interfaz incluidos) | Sí (integrada) |
| Búsqueda | Sí (integrada, en el cliente) | Sí (basada en Orama, Algolia opcional) |
| Renderizado de OpenAPI | No | Sí (fumadocs-openapi) |
| Blog | No | No (usa rutas de Next) |
| Registro de cambios | No | No |
| Sitemap | Sí (con site definido) |
Mediante sitemap.ts de Next.js |
| RSS | No | Mediante rutas de Next.js |
| Temas | Escapes en .htmlpress/ + tokens --htmlpress-* |
Cambiar fumadocs-ui o hacer override por componente |
| Rutas personalizadas |
Cualquier archivo .html; layouts adicionales en
.htmlpress/layouts/
|
Cualquier página del App Router de Next |
| CLI independiente | Sí (htmlpress build) |
No (comandos de Next.js) |
Salida y despliegue
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.
Fumadocs hereda los modos de salida de Next.js: exportación estática completa (output: 'export'), SSG/SSR híbrido o totalmente dinámico. El despliegue admite lo mismo que
Next.js: Vercel es el destino por defecto, pero funciona cualquier hosting de Node o
Cloudflare Workers (mediante OpenNext).
Ver también
- Redacción — la superficie HTML de htmlpress.
- Personalización — las claves de configuración y los escapes de htmlpress.
- Comparativa — volver al índice.
Hecho con ❤ y Htmlpress