# Fumadocs vs Htmlpress

> Un generador de sitios independiente en HTML plano frente al App Router de Next.js para docs.

[Fumadocs](https://fumadocs.dev) 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](/es/deployment/) 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](/es/authoring/) — la superficie HTML de htmlpress.
- [Personalización](/es/customization/) — las claves de configuración y los escapes de htmlpress.
- [Comparativa](/es/comparison/) — volver al índice.
