Saltar al contenido
duxt

Fuentes

Una lista de fuentes se convierte en cada colección, prefijo y versión que sirve el sitio.

Una fuente es una carpeta con Markdown: en este repositorio o en otro, en el checkout actual o en refs con nombre. La lista sources es el único sitio donde se declaran, y todo lo demás se genera a partir de ella.

sources: [
  { path: 'docs', slug: 'acme' },
  { repo: 'acme/api', path: 'docs', refs: ['main', 'v2.0.0', 'v1.4.0'] }
]

Dos repositorios y tres refs: cinco colecciones, los prefijos de URL que las sirven, un selector de versiones, las reglas de redirección y las entradas del sitemap. Nada de eso se escribe a mano. Cada campo está en la referencia de fuentes.

Cómo funciona

Content v3 ya hace la mitad difícil. La fuente de una colección acepta una URL de repositorio, una rama o etiqueta y credenciales, y Content la descarga y la cachea por hash — múltiples repositorios, repositorios privados y leer desde una etiqueta ya existen ahí. duxt no reimplementa nada de eso.

Lo que duxt añade ocurre al cargar la configuración. content.config.ts es código ejecutado, no un archivo de datos, así que puede leer el app.config.ts del sitio y calcular sus colecciones a partir de esa lista — una colección por repositorio × ref, cada una con un cwd absoluto, un nombre derivado del slug y el esquema de página que necesita el tema. La misma lista la resuelve una segunda vez la compilación, en el manifiesto: qué colección sirve qué prefijo de URL, qué ref es la predeterminada, de dónde vino cada página. Ese manifiesto es lo que lee el tema, y se escribe de vuelta en la configuración de la app como resolvedSources.

Por qué está construido así

Declarar las colecciones a mano no escala en la única dirección en la que la documentación realmente crece: tres versiones en catorce repositorios son cuarenta y dos declaraciones, y cada publicación edita las catorce. El atajo mantiene la lista tan larga como el número de proyectos.

El coste es que una lista de fuentes expresa menos que una colección escrita a mano. Es un intercambio deliberado: quien necesite algo que el atajo no sepa decir escribe su propio content.config.ts y toma el control por completo, porque Content combina el archivo de cada capa y gana el posterior.

Lo que se obtiene de paso

Como una fuente nombra un repositorio, una ref y una carpeta, varias funciones no necesitan configuración propia: «Editar esta página», la fecha de última actualización y la lista de personas que han contribuido se derivan de ahí. Leer el historial de una fuente remota cuesta un clon completo, así que espera a history: true — un clon superficial informaría del autor de la punta para cada archivo, y eso son datos erróneos, no datos ausentes.

¿Le ha resultado útil esta página?