Zum Hauptinhalt springen

content.config.ts

Vollständige Referenz für Content Factory, generierte Collections, Quellen, Routen, Schemas und Agent-Metadaten von Ginko Docs.

content.config.ts legt fest, welche Dateien zur Website gehören und welche öffentlichen Routen Ginko Content daraus ableitet. Ginko Docs exportiert eine Factory für das unterstützte Docs-Modell mit optionalem Blog.

content.config.ts
import { defineGinkoDocsConfig } from "@lupinum/ginko-docs/content";

export default defineGinkoDocsConfig({
  site: {
    name: { en: "Example Docs", de: "Example Docs" },
    description: {
      en: "Documentation for Example.",
      de: "Dokumentation für Example.",
    },
    url: "https://docs.example.com",
  },
  locales: ["en", "de"],
  blog: true,
});

Factory-Optionen

Öffentlicher Typ
interface GinkoDocsContentOptions {
  site: {
    name: string | { en: string; de: string };
    description: string | { en: string; de: string };
    url: string;
  };
  locales?: readonly ["en"] | readonly ["en", "de"];
  blog?: boolean;
}
OptionTypStandardWirkung
site.namestring oder { en: string; de: string }erforderlichLokalisierter Seitentitel in Agent-Metadaten
site.descriptionstring oder { en: string; de: string }erforderlichLokalisierte Beschreibung in Agent-Metadaten
site.urlstringerforderlichAbsolute Origin für Agent-Links
locales['en'] oder ['en', 'de']['en']Exakt unterstütztes Content-Layout; alle anderen Werte werfen einen Fehler
blogbooleanfalseErgänzt blog und authors und hält Blogrouten aktiv

Generierte Collections

Die Factory erstellt immer docs. Nur mit blog: true ergänzt sie blog und authors.

CollectionTypQuelleCollection-RoutenmountSitemapAgent-Markdown
docspageAbhängig vom Sprachmodus/docs auf Englisch, /dokumentation auf DeutschJaBereich optional
blogpage2.blog/*.md/blogJaBereich blog
authorsdataauthors/**/*.jsonKeineNeinNein

Alle drei Collections verwenden strict: true. Ungültige Dokumente stoppen die Verarbeitung, statt nur eine Warnung auszugeben.

Einsprachige Quellen

Im unterstützten englischen Einsprachenmodus verwendet die Factory diese Struktur:

Einsprachiger Content
content/
├── docs/**/*.md
├── 2.blog/*.md          # nur mit blog: true
└── authors/**/*.json    # nur mit blog: true

Docs liegen unter /docs, Blogbeiträge unter /blog. Collection-i18n bleibt ungesetzt.

Zweisprachige Quellen

Mit mehr als einer Sprache aktiviert die Factory Collection-i18n und verwendet diese sprachrelativen Globs:

Zweisprachiger Content
content/
├── en/
│   ├── 1.docs/**/*.md
│   ├── 2.blog/*.md          # nur mit blog: true
│   └── authors/**/*.json    # nur mit blog: true
└── de/
    ├── 1.dokumentation/**/*.md
    ├── 2.blog/*.md          # nur mit blog: true
    └── authors/**/*.json    # nur mit blog: true

Das exakte Docs-Quellmuster lautet {1.docs,1.dokumentation}/**/*.md. Routen mounten unter /docs für en und /dokumentation für de. Die Blogroute lautet in beiden Sprachen /blog.

Mit der unterstützten englischen Standardsprache und der Nuxt-I18n-Strategie ergeben sich daraus die öffentlichen Docs-Roots /docs und /de/dokumentation.

Generierte Agent-Konfiguration

Die Factory leitet die Agent-Site aus site ab, aktiviert Metadaten-Frontmatter und verwendet diese Felder in der angegebenen Reihenfolge:

Agent-Metadatenfelder
title, description, url, route, locale, section, collection, source, updated

Sie erstellt den lokalisierten Bereich optional mit der Reihenfolge 100. Mit blog: true kommt der lokalisierte Bereich blog mit der Reihenfolge 40 hinzu. Landingpages bleiben Eigentum der App und werden nicht als synthetische Content-Einträge dupliziert.

Collection-Invarianten

Das generierte Modell hält eine eindeutige Quelle der Wahrheit:

  • docs und blog sind routenbasierte Page-Collections.
  • authors enthält abfragbare Daten und erhält weder öffentliche Route noch Sitemap-Eintrag oder Agent-Seite.
  • Docs- und Blogseiten aktivieren normalisiertes Raw-Markdown, llms.txt und llms-full.txt.
  • Entwürfe sind in der Entwicklung sichtbar, fehlen aber in Produktions-Agent-Ausgabe und öffentlicher Navigation.
  • Partials werden nicht zu öffentlichen Seiten.

Verwende defineGinkoDocsConfig() als vollständige Content-Konfiguration. Eine zusätzliche Neudeklaration derselben Collections erzeugt konkurrierende Schemas und Routenregeln.