Squidoc

Versionado

Usa @squidoc/plugin-versions cuando tu documentación necesita describir varias versiones publicadas del mismo proyecto. Es útil cuando una versión nueva cambia APIs, campos de configuración, paquetes o puntos de extensión.

npx squidoc add plugin @squidoc/plugin-versions

Configuración básica

{
  name: "@squidoc/plugin-versions",
  options: {
    current: {
      name: "1.0",
      label: "1.0",
    },
    versions: [
      {
        name: "0.9",
        label: "0.9",
      },
    ],
  },
}

Estructura de archivos

Mantén la documentación principal en docs/:

docs/
  index.md
  configuration.md

Coloca versiones archivadas en docs/versions/<name>/:

docs/
  versions/
    0.9/
      index.md
      configuration.md

Por defecto, docs/versions/0.9/configuration.md se publica como /docs/versions/0.9/configuration.

Prefijos personalizados

Usa docsPrefix para cambiar dónde vive una versión en disco y routePrefix para cambiar su URL pública.

current: true marca una versión como activa para el selector y la búsqueda. hidden: true permite publicar una versión sin mostrarla en el selector, útil para una rama Next.

Qué agrega

El plugin genera versions.json, agrega el slot version-selector y escribe metadata de versión en cada página:

{
  squidocVersion: "0.9",
  squidocVersionLabel: "0.9",
  squidocVersionRoutePrefix: "/docs/versions/0.9",
  squidocVersionCurrent: false,
}

Páginas faltantes

Al cambiar de versión, Squidoc intenta mantener al lector en la página equivalente. Si no existe, lo envía al inicio de la versión destino en lugar de mostrar 404.

Búsqueda

Cuando búsqueda y versionado están habilitados, los resultados se limitan a la versión activa y muestran la etiqueta de versión junto al título.

Idiomas

Versionado se implementa como transform del proyecto. Eso permite componerlo con i18n y mantener rutas localizadas y versionadas de forma consistente.

Ejemplos de referencia

{
  name: "@squidoc/plugin-versions",
  options: {
    current: {
      name: "next",
      label: "Next",
      routePrefix: "/next",
      hidden: true,
    },
    versions: [
      {
        name: "0.1",
        label: "0.1",
        routePrefix: "/",
        current: true,
      },
    ],
  },
}
[
  {
    "name": "1.0",
    "label": "1.0",
    "routePrefix": "/docs",
    "current": true,
    "routes": ["/docs", "/docs/configuration"]
  },
  {
    "name": "0.9",
    "label": "0.9",
    "routePrefix": "/docs/versions/0.9",
    "current": false,
    "routes": ["/docs/versions/0.9", "/docs/versions/0.9/configuration"]
  }
]
{
  squidocVersion: "0.9",
  squidocVersionLabel: "0.9",
  squidocVersionRoutePrefix: "/docs/versions/0.9",
  squidocVersionCurrent: false,
}