# Archivo de configuración

> Dónde vive la configuración de htmlpress, qué controla y un recorrido por las opciones de primer nivel.

> **Info**
>
> El archivo de configuración es opcional. Por defecto, htmlpress toma todos los archivos `.html` de la carpeta que le indiques.

Htmlpress se configura con un único archivo en la raíz de tu proyecto: **`htmlpress.yaml`**. Colócalo junto a tus páginas y htmlpress lo detecta automáticamente: sin flags ni variables de entorno. Sus claves siguen la configuración de [Livemark](https://livemark.dev).

## Configuración mínima

Todas las claves son opcionales, así que un proyecto no necesita ninguna configuración. La más pequeña que resulta útil le da nombre al sitio:

```yaml
title: My docs
```

Un `htmlpress.yaml` vacío equivale a no tenerlo. Sin él, cada archivo `.html` y `.md` del proyecto (por defecto `include: ["**/*.html", "**/*.md"]`) se convierte en una página, renderizada con el layout y el tema integrados: barra lateral, tabla de contenidos, modo oscuro, todo por defecto. Cualquier otro archivo se copia tal cual a la salida, en la misma ruta. Las carpetas ocultas como `.git/` y `.htmlpress/`, y `node_modules/`, se omiten.

## Qué puedes configurar

Cada clave tiene un valor predeterminado razonable. El conjunto completo:

| Clave                             | Predeterminado                         | Uso                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| --------------------------------- | -------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `include`                         | `**/*.html`, `**/*.md`                 | un glob o una lista: los archivos `.html` y `.md` que se convierten en páginas; un `.md` junto a su gemelo `.html` se copia en su lugar                                                                                                                                                                                                                                                                                                             |
| `exclude`                         | ninguno                                | un glob o una lista: archivos que quedan totalmente fuera de la compilación, sean páginas o no                                                                                                                                                                                                                                                                                                                                                      |
| `title`                           | el nombre de la carpeta                | la cabecera y el título de cada pestaña                                                                                                                                                                                                                                                                                                                                                                                                             |
| `description`                     | ninguno                                | para las páginas que no tienen una propia                                                                                                                                                                                                                                                                                                                                                                                                           |
| `site`                            | ninguno                                | la URL pública, para los enlaces canónicos y sociales y `sitemap.xml`                                                                                                                                                                                                                                                                                                                                                                               |
| `base`                            | ninguno                                | la subruta bajo la que se sirve el sitio, como `/repo/` en GitHub Pages; consulta [Ruta base](#base-path)                                                                                                                                                                                                                                                                                                                                           |
| `logo`                            | ninguno                                | la URL de una imagen, mostrada antes del título del sitio                                                                                                                                                                                                                                                                                                                                                                                           |
| `favicon`                         | el logo                                | la URL del icono del sitio                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `banner`                          | ninguno                                | HTML para una barra de anuncios sobre la cabecera                                                                                                                                                                                                                                                                                                                                                                                                   |
| `breadcrumbs`                     | `true`                                 | la ruta de carpetas sobre el contenido de cada página; el `<meta name="breadcrumbs">` de una página la anula                                                                                                                                                                                                                                                                                                                                        |
| `head`                            | ninguno                                | `meta`, `links` y `scripts` añadidos al head de cada página; consulta [Metadatos del sitio](/es/customization/site-metadata/)                                                                                                                                                                                                                                                                                                                       |
| `links`                           | ninguno                                | enlaces en la cabecera o en la barra lateral; consulta [Enlaces externos](/es/customization/external-links/)                                                                                                                                                                                                                                                                                                                                        |
| `sections`                        | ninguno                                | partes del sitio con una navegación propia; consulta [Secciones de artículos](/es/customization/article-sections/)                                                                                                                                                                                                                                                                                                                                  |
| `edit`                            | ninguno                                | un enlace "Editar esta página": esta URL seguida de la ruta de la página                                                                                                                                                                                                                                                                                                                                                                            |
| `contentSignals`                  | todas `true`                           | `search`, `aiInput` y `aiTrain`: cómo pueden usar el contenido los sistemas automatizados, escrito en `robots.txt`; consulta [Agentes de IA](/es/customization/ai-agents/)                                                                                                                                                                                                                                                                          |
| `codeThemeLight`, `codeThemeDark` | `catppuccin-latte`, `catppuccin-mocha` | Los temas de los bloques de código; consulta [Temas de sintaxis](/es/customization/syntax-themes/).                                                                                                                                                                                                                                                                                                                                                 |
| `patches`                         | ninguno                                | Metadatos de página definidos desde la configuración, y archivos `.md` publicados como páginas; consulta [Parches de artículos](/es/customization/article-patches/).                                                                                                                                                                                                                                                                                |
| `plugins`                         | ninguno                                | Plugins de [Textlane](https://textlane.dev) añadidos al pipeline de páginas, cada uno un nombre o `{ name, options }`: `md` sobre el árbol de una página Markdown tras sus directivas, `html` sobre el árbol de cada página antes de los ids de los encabezados. Un plugin que htmlpress ya ejecuta, como `md.gfm` o `html.slug`, se reconfigura con tus opciones en lugar de ejecutarse dos veces; consulta [Plugins](/es/customization/plugins/). |
| `skills`                          | ninguno                                | un glob o una lista de archivos `SKILL.md`, relativos al proyecto, para publicar como [skills de agente](/es/customization/ai-agents/)                                                                                                                                                                                                                                                                                                              |
| `languages`                       | uno, inglés                            | los idiomas en los que se publica el sitio, el predeterminado primero; consulta [Traducciones](/es/customization/translations/)                                                                                                                                                                                                                                                                                                                     |

Con `languages`, los textos que ve un lector (`title`, `description`, `banner` y los títulos de enlaces y secciones) también aceptan un mapa por código de idioma, como `title: { en: Docs, es: Guía }`.

El esquema completo está en [`rust/src/models/config.rs`](https://github.com/datisthq/htmlpress/blob/main/rust/src/models/config.rs). Una clave desconocida es un error, así que una errata nunca pasa en silencio.

### Include y exclude

`include` reemplaza el valor predeterminado, así que lista todas las carpetas que quieras. Las carpetas de cada glob anteriores a su primer comodín son su base: solo se leen los archivos bajo una base, y se sirven sin ella, de modo que `docs/**/*.html` compila `docs/guide.html` en `/guide/`. Los demás archivos bajo una base, incluidos los `.html` que `include` deja fuera, se copian tal cual.

Los globs son relativos al proyecto y no pueden salir de él (`..` o una ruta absoluta es un error): `*` se queda dentro de una carpeta, `**` atraviesa carpetas, y un patrón de `include` o `exclude` que no coincide con ningún archivo muestra una advertencia.

### Ruta base

Con `base` definido, cada URL relativa a la raíz de la compilación (en `href`, `src`, `srcset`, `poster` y `action`, tanto en las páginas como en el layout y en el HTML de la configuración) la recibe como prefijo: escribe `/guide/` y el sitio enlaza a `/repo/guide/`. Las URL relativas y absolutas no se tocan, y tampoco las `url()` del CSS propio de una página. `start` y `preview` también sirven el sitio bajo la base, y redirigen `/` allí; reinicia `start` tras cambiar `base`.

## Ejemplo completo

La mayoría de los sitios reales acaban pareciéndose a esto:

```yaml
site: https://htmlpress.dev
title: Htmlpress
description: Static site generator
logo: /logo.svg
banner: 'Version 1 is out: <a href="/changelog/">read more</a>'
include: docs/**/*.html
exclude: docs/**/_*
links:
  - title: GitHub
    url: https://github.com/datisthq/htmlpress
  - title: Chat
    url: https://discord.gg/example
    position: sidebar
head:
  scripts:
    - src: https://stats.example.com/script.js
      defer: ""
contentSignals:
  aiTrain: false
skills: .skills/*/SKILL.md
edit: https://github.com/datisthq/htmlpress/edit/main/docs/
```

## Adónde ir después

- [Metadatos del sitio](/es/customization/site-metadata/): título, descripción, favicon, logo.
- [Secciones de artículos](/es/customization/article-sections/): divide el sitio en secciones con su propia navegación.
- [Enlaces externos](/es/customization/external-links/): enlaces de la cabecera y de la barra lateral.
- [Temas de sintaxis](/es/customization/syntax-themes/): el aspecto de los bloques de código.
- [Parches de artículos](/es/customization/article-patches/): sobrescribe los metadatos de una página desde la configuración.
- [Sobrescritura/Escape](/es/customization/overriding-escaping/): reemplaza cualquier layout, hoja de estilos o componente integrado.
- [Rutas personalizadas](/es/customization/custom-routes/): páginas con su propio layout.
