Versionado
Publica documentación de más de un lanzamiento a la vez - crea una instantánea de versión, y cada tema obtiene un selector de versión gratis.
En esta página
Versionado
La documentación versionada es convención antes que configuración - no
hay ninguna clave de bxsites.yaml que activar. Añade una carpeta
docs/versions/, y cada subcarpeta directa dentro de ella se construye
como su propio árbol de documentación totalmente autocontenido, junto a
tu docs/ regular (que siempre se construye como "Latest"):
docs/
├── index.md
├── guides/
└── versions/
├── 1.0/
│ ├── index.md
│ └── guides/
└── 2.0/
├── index.md
└── guides/
Cada carpeta de versión es un árbol normal con la forma de docs/ - su
propio index.md, su propia nav, sus propias páginas - construido en
site/versions/<name>/ con cada enlace interno prefijado
correspondientemente, y compartiendo la única configuración/tema de
bxsites.yaml del proyecto. Un archivo suelto colocado directamente bajo
docs/versions/ (no dentro de una subcarpeta) se ignora.
Crear una nueva versión
version:new toma una instantánea del árbol actual de docs/ en
docs/versions/<name>/ - el flujo de trabajo habitual es: termina la
documentación de un lanzamiento, crea una versión justo antes de empezar
a escribir la documentación del siguiente, de modo que la instantánea
congela exactamente lo que se publicó:
bxSites version:new --name=1.0
--name(obligatorio) - la carpeta/etiqueta de la versión, por ejemplo1.0
La instantánea excluye assets/, versions/, i18n/ y blog/ - cada
una de ellas es su propio árbol cargado por separado, no parte del
propio contenido de una versión, asà que nunca se duplican dentro de
ella.
No hay ningún verbo equivalente para "deshacer una versión" y ningún
otro verbo apunta a una versión especÃfica -
page:new/page:rename/post:new/etc. siempre operan contra el árbol
principal docs/. Editar las propias páginas de una versión ya creada
(corregir una errata en docs/versions/1.0/guides/setup.md, por
ejemplo) es simplemente editar ese archivo directamente, igual que
cualquier otra página.
Qué se construye
Cada versión se construye en site/versions/<name>/, con su propia nav,
migas de pan, enlaces anterior/siguiente, y editUri correctamente
delimitados a la propia ruta de origen de esa versión. Los nombres de
versión se ordenan de más nueva a más antigua, numéricamente en
lugar de alfabéticamente - 2.0 se ordena antes que 10.0 - y cada
tema incorporado renderiza automáticamente un desplegable selector de
versión en la cabecera en cuanto existe más de una versión (el árbol
principal "Latest" cuenta como una), sin nada que activar. Cambiar de
versión te mantiene en el árbol de la página equivalente cuando es
posible.
sitemap.xml y llms.txt incluyen las páginas de cada versión junto a
las del sitio principal - una versión es una parte de primera clase,
totalmente rastreable/enlazable del sitio, no un archivo oculto.
Publicar una versión por defecto en la raÃz del sitio
Una vez que un proyecto tiene una versión real y publicada a la que
dirigir a la gente, docs/ en sà mismo suele estar a mitad de camino
escribiendo la siguiente - no es donde deberÃa aterrizar un visitante
primerizo. versions.default nombra en su lugar una carpeta
docs/versions/<name>/ para construirla en la raÃz del sitio:
versions:
default: "1.0.x"
Una vez configurado:
docs/versions/1.0.x/se construye en la raÃz del sitio (/), no en/versions/1.0.x/- nunca se duplica en ambos sitios.- El árbol
docs/simple - el que siempre se construyó antes en la raÃz- se construye en cambio en
/next/, totalmente navegable/enlazable, solo que ya no es la versión por defecto. Útil para escribir/revisar a la vista la documentación del próximo lanzamiento sin que parezca que ya se ha publicado.
- se construye en cambio en
- El selector de versión muestra
1.0.x (Current)seleccionado en la raÃz, luego cada una de las demás carpetasdocs/versions/*, luego un separador y una entradaNextque apunta a/next/en último lugar - las versiones publicadas primero, con el árbol en curso aparte, al final, en lugar de encajado en segundo lugar. - Las páginas de
/next/quedan excluidas desitemap.xml, yrobots.txtrecibe una lÃneaDisallow: /next/- un árbol en curso no deberÃa competir con la documentación real en los resultados de búsqueda. Por lo demás sigue siendo una parte completamente normal y accesible del sitio (su propio Ãndice de búsqueda, su propia página de etiquetas, su propio soporte deredirects). /next/no obtiene sus propios subárboles de idioma en la v1 -docs/i18n/<code>/sigue traduciendo la misma carpeta fÃsicadocs/de siempre, pero por ahora solo la construcción del idioma por defecto se publica bajo/next/.
Un versions.default mal configurado (que nombra una carpeta que en
realidad no existe bajo docs/versions/) hace que la construcción falle
con un error claro de BxSites.UnknownDefaultVersion, en lugar de caer
silenciosamente a otra cosa.
Los lanzamientos de parche (1.0.1, 1.0.2, ...) son solo ediciones en el
propio sitio de la carpeta docs/versions/1.0.x/ ya creada -
versions.default no cambia y no se crea ninguna versión nueva. Solo un
incremento real de minor/major (1.1, 2.0) justifica version:new
creando una carpeta nueva, con versions.default pasando a apuntar a
ella.
Combinar con i18n
Consulta i18n: "Docs versionados y traducidos"
para la propia convención docs/versions/<name>/i18n/<code>/, que
refleja la propia estructura de una versión exactamente de la misma
forma que el docs/i18n/<code>/ de nivel superior refleja el propio
docs/.
Qué queda fuera de alcance (por ahora)
- La búsqueda está delimitada por árbol, no unificada entre
versiones. El proveedor de búsqueda
localpor defecto escribe unsearch-index.jsonseparado por árbol durante una construcción real -site/search-index.jsonpara "Latest",site/versions/2.0/search-index.jsonpara la versión2.0, y asà sucesivamente - asà que la búsqueda de un visitante solo cubre la versión que está leyendo en ese momento, nunca todas las versiones a la vez. Los verbos independientes de la CLIsearch-index/search:queryvan un paso más allá y solo cargan el árbol principaldocs/sin importar cuántas versiones existan, ya que están pensados para una comprobación rápida contra tu documentación actual en curso, no una construcción completa - ejecutabuildprimero si necesitas el Ãndice real de una versión concreta. El proveedor de búsquedapagefindes la excepción: rastrea todo elsite/construido en un solo paso, versiones incluidas - consulta Búsqueda. - Sin marcador de obsoleto/fin de soporte, sin etiqueta personalizada. La entrada del selector de una versión siempre es simplemente el nombre de su carpeta - no hay ninguna configuración para marcar una como no compatible o renombrar su etiqueta mostrada de forma independiente a la carpeta. Archivar una versión antigua significa dejar su carpeta en su sitio (o eliminarla y aceptar los enlaces rotos, igual que al eliminar cualquier otra página).