# Versionado

> Publica documentación para varias versiones en paralelo con secciones o despliegues separados.

Htmlpress no tiene una función dedicada al versionado: las piezas que ya ofrece cubren los dos casos habituales. Elige según lo distintas que sean tus versiones:

- **Un sitio, una sección por versión**: unas pocas versiones cuya documentación vive en una sola rama.
- **Un despliegue por versión**: versiones mayores de larga duración mantenidas en sus propias ramas.

La mayoría de los proyectos solo necesitan mantener la documentación más reciente y la de la versión mayor anterior. Si las versiones antiguas solo necesitan sus notas, basta con una [sección de registro de cambios](/es/customization/article-sections/#secciones-de-registro-de-cambios).

## Una sección por versión

Guarda las páginas de cada versión anterior en una carpeta propia. La documentación actual se queda en `/`, y cada versión anterior se convierte en una sección:

- getting-started.html

- v1

  - index.html
  - getting-started.html

**htmlpress.yaml**

```yaml
title: Acme
sections:
  - title: Docs
    prefix: /
  - title: v1
    prefix: /v1/
    icon: archive
    siteTitle: Acme v1
```

La correspondencia por el prefijo más largo lleva cada página `/v1/…` a la sección `v1`, así que obtiene su propia barra lateral mientras el resto del sitio mantiene la documentación actual. `siteTitle` cambia el texto de la marca junto al logo dentro de esa sección, para que el lector siempre vea en qué versión está. Define `position: sidebar` para sacar las pestañas de versión de la cabecera.

Para avisar a los lectores en las páginas antiguas, empieza cada una con un callout:

**HTML**

```html
<htmlpress-callout type="warning">
  <p>You are reading the docs for v1. <a href="/getting-started/">See the latest version</a>.</p>
</htmlpress-callout>
```

**Markdown**

```md
:::warning
You are reading the docs for v1. [See the latest version](/getting-started/).
:::
```

Conviene saber:

- La búsqueda indexa todo el sitio, así que los resultados incluyen las páginas de todas las versiones.
- Copiar una carpeta por versión duplica contenido; congela la carpeta antigua y corrígela solo cuando sea necesario.

## Un despliegue por versión

Cuando cada versión mayor vive en su propia rama (`main`, `v1`, …), compila cada rama como un sitio propio y sírvela desde su propia dirección: un subdominio (`v1.docs.example.com`) o una subruta (`docs.example.com/v1/`) con [`base`](/es/deployment/github-pages/#configura-base-para-sitios-de-proyecto).

**htmlpress.yaml (rama v1)**

```yaml
site: https://docs.example.com
base: /v1/
title: Acme v1
banner: You are reading the v1 docs · <a href="https://docs.example.com/">Go to the latest →</a>
```

`htmlpress start` y `preview` sirven bajo la misma base, así que la rama se previsualiza exactamente como se despliega. Enlaza los despliegues entre sí con una sección `custom` o un [enlace](/es/customization/external-links/) de la cabecera, que actúa como selector de versión:

**htmlpress.yaml (rama main)**

```yaml
sections:
  - title: Docs
    prefix: /
  - title: v1
    type: custom
    url: https://docs.example.com/v1/
    icon: archive
```

Cada despliegue tiene su propio índice de búsqueda, sitemap y `llms.txt`, así que las versiones nunca se mezclan. El coste es una compilación y un job de CI por cada rama mantenida; consulta [Deployment](/es/deployment/) para la configuración de cada hosting. La mayoría de los hostings despliegan las ramas en sus propias URL de serie.

## Ver también

- [Secciones de artículos](/es/customization/article-sections/): tipos de sección, prefijos y correspondencia.
- [Metadatos del sitio](/es/customization/site-metadata/): los campos `banner`, `title` y `site` usados arriba.
