Zum Inhalt springen
duxt

Konfiguration

Jeder Schlüssel unter duxt in app.config.ts — was er steuert, und wann er gelesen wird.

Alles unten lebt unter duxt in deiner app/app.config.ts. Wie die Zusammenführung funktioniert, und warum Arrays ersetzen statt anzuhängen, steht in Konfiguration.

Seite

SchlüsselStandardWas er steuert
titlekeinerDer Name in der Navigationsleiste und im SEO-Titel
logokeinerEine Wortmarke statt des Paars aus Icon und Name — siehe unten
versionkeineDas Abzeichen daneben
organizationkeineWer die Seite herausgibt, für schema.org — siehe unten
localesalle siebenWelche Sprachen der Ebene diese Seite bedient
breadcrumbtruefalse entfernt die Spur über dem Seitentitel
pageIconkeinsIcon für Seiten ohne eigenes im Frontmatter — das der Sektion gewinnt
packageManagerspnpm, npm, yarn, bunWelche Manager ein Befehlsblock anbietet, in dieser Reihenfolge
requestSamplessieben von zwölfWelche Code-Samples der Try-it-Client anbietet — siehe Request-Samples
sampleLanguageskeineZusätzliche Shiki-Grammatiken, für x-codeSamples in einer Sprache, die kein Sample nennt
poweredByanfalse entfernt die Zeile „Powered by duxt“ aus dem Fußbereich
FeldTypHinweise
srcstringDie Marke. Ohne Wert bleibt das generische Icon neben title
srcDarkstringWird per CSS unter der dark-Klasse getauscht, nicht per Skript
altTextFällt auf title zurück

Wie du eine setzt, steht in Deiner Website eine Marke geben.

organization

Der Organization-Knoten, den Suchmaschinen und KI-Zusammenfassungen lesen, um eine Quelle zu benennen. Abwesend, bis du ihn setzt: duxt rendert die Dokumentation anderer und rät nicht, wessen.

FeldTypHinweise
nameTextDer Name der Herausgeberin. Ohne ihn wird nichts veröffentlicht
urlstringDeren Seite. Fällt auf site.url zurück
logostringAbsolut oder ein Pfad ab der Wurzel; quadratisch und ab 112px

Ein Sektionseintrag ist ein Link plus ein eigenes Feld:

FeldTypHinweise
pageIconstringIcon für Seiten dieser Sektion ohne eigenes. Überschreibt duxt.pageIcon; das Frontmatter einer Seite gewinnt weiterhin

Nützlich, wo Seiten gar kein Icon tragen können — das Frontmatter einer ADR ist auf title, description, status und date festgelegt, das Entscheidungsprotokoll rendert also sonst ohne.

SchlüsselStandardWas er steuert
navigationein EintragLinks der Navigationsleiste; ein Eintrag mit children wird ein Aufklappmenü
sectionsleerDie zweite Navigationszeile — die obersten Teile der Doku
linksleerIcon-Links rechts in der Navigationsleiste
asidenur Titeltitle und links unter dem Inhaltsverzeichnis
footerleercopyright und legal
landingeine AktionDie Seite unter /

Die meisten davon werden leer ausgeliefert, aus zwei verschiedenen Gründen. links, aside.links, footer.legal, title, version und der Text der Landeseite benennen ein bestimmtes Projekt — ein Repository, eine Community, ein Impressum, einen Namen, ein Release, einen Satz darüber, was es tut — und gehören dem, der die Seite betreibt. sections benennt die Teile eines Dokumentationsbaums, und der Baum ist deiner: vier Reiter, die auf von der Ebene geratene Ordnernamen zeigen, führten ins Leere. Bis du sie setzt, rendert die Zeile nicht und die Seitenleiste zeigt den ganzen Baum, was die richtige Form für eine Doku ist, die nicht in Sektionen geteilt ist.

Eine Zeile je Quelle. Ein Eintrag gehört der Quelle, unter deren URL-Präfix er liegt, und die Zeile zeigt die Einträge der Quelle, in der der Leser gerade ist — eine Seite mit Dokumentation an der Wurzel und etwas anderem unter /demo schreibt also eine sections-Liste, und jeder Bereich zeichnet seinen Teil davon. Eine generierte Section unterhalb eines Bereichs (/demo/api) gehört zu diesem Bereich, statt selbst einer zu sein. Eine Seite mit einer einzigen Quelle hat einen Bereich, jeder Eintrag liegt darin, und die Zeile ist genau die Liste, wie sie geschrieben steht.

Landeseite

Die Seite unter / zeichnet drei Bänder, und jedes davon fehlt, bis sein Schlüssel gesetzt ist.

SchlüsselStandardWas er zeichnet
badgekeinsDie Pille über der Überschrift — Text oder ein Abzeichen-Objekt
headlinekeineDie h1; fällt auf title zurück
descriptionkeineDer Absatz darunter und die Meta-Beschreibung der Seite
actionseine, „Doku lesen“Die Schaltflächen des Heldenbereichs; eine Aktion ohne to löst auf die erste Sektion auf
commandkeinerEin kopierbarer Installationsbefehl unter den Schaltflächen
previewkeineEine Seite dieser Website, eingebettet in ein Browserfenster
featuresleerDas Kartenraster

command ist eine schlichte string, kein Text: Ein Shell-Befehl ist in jeder Sprache gleich, und einer, der versehentlich übersetzt wurde, ist einer, der nicht läuft. Die Ebene liefert keinen — sie weiß nicht, wie dein Projekt heißt, aus demselben Grund, aus dem links leer ist.

Es gibt bewusst keinen abschließenden Handlungsaufruf. Die Schaltflächen des Heldenbereichs sind der Aufruf; sie unter einem Kartenraster zu wiederholen verlangt von einem gerade angekommenen Leser, sich zweimal zu entscheiden.

badge ist aus demselben Grund leer wie links: Eine Pille über der Überschrift sagt etwas über den Zustand eines Projekts — „beta“, „v2 ist da“ — und die Ebene weiß nichts über den Zustand deines. Eine Zeichenkette ist die Kurzform; das Objekt fügt Icon, Farbe und Ziel hinzu.

badge-FeldTypAnmerkungen
labelTextPflicht. {version} wird durch die version der Seite ersetzt
iconstringBeliebiger Iconify-Name
variantstringdefault, secondary, outline, success, destructive
tostringMacht die ganze Pille zu einem Link
externalbooleanDer neue Tab
badge: {
  label: '{version} veröffentlicht',
  icon: 'lucide:rocket',
  variant: 'success',
  to: 'https://github.com/acme/sdk/releases/latest',
  external: true
}

preview ist ein lebendes Fenster, kein Bild. Es bettet eine Seite dieser Website in einen Browserrahmen ein, den der Leser scrollen, in dem er navigieren und dessen Theme er wechseln kann, ohne die Landeseite zu verlassen. Der Rahmen wird erst eingehängt, wenn das Band ins Sichtfeld scrollt, und nie beim Server-Rendering — ein iframe im ursprünglichen HTML ist ein zweiter voller Seitenaufbau, der mit dem ersten konkurriert.

preview-FeldTypAnmerkungen
tostringDie einzubettende Seite; standardmäßig die erste Sektion
heightstringBeliebige CSS-Länge. Standard 32rem, 24rem unter sm
srcstringEin Bildschirmfoto ANSTELLE der lebenden Seite
srcDarkstringBedient den Dunkelmodus; ohne es bedient src beide
altTextDer Alt-Text des Bildes und der zugängliche Name des Rahmens
FeldTypAnmerkungen
labelTextPflicht
tostringEin Dokumentationspfad wird lokalisiert, eine URL nicht
iconstringBeliebiger Iconify-Name, z. B. lucide:rocket
descriptionTextIn einem Aufklappmenü der Navigationsleiste gezeigt
externalbooleanDer neue Tab und der Pfeil — nie das Routing
childrenDuxtLink[]Macht aus einem Navigationseintrag ein Aufklappmenü
variantSchaltflächenvarianteNur landing.actions

Jedes als Text markierte Feld nimmt ein Literal, einen i18n-Schlüssel oder einen Datensatz je Locale — siehe Lokalisierung.

Quellen

SchlüsselGelesen zurWas er steuert
sourcesBuild-ZeitDie Dokumentationsquellen
sourceOptionsBuild-ZeitWie diese Quellen zu URL-Präfixen werden
versionsLaufzeitÜberschreibt die abgeleiteten Versionen, wenn sie Beschriftungen oder Beschreibungen brauchen

Beide Quellenschlüssel haben eine eigene Seite. locales ist der dritte Build-Zeit-Schlüssel: eines der drei zu ändern erfordert einen erneuten Build.

Der Feed

/rss.xml ist leer, bis feed.path eine Sektion benennt:

feed: { path: '/changelog', title: 'mein Projekt — Releases' }

Standardmäßig aus, mit Absicht. Ein Feed ist eine Liste von Dingen, die passiert sind, und eine bearbeitete Referenzseite ist kein Ereignis — eine Seite, die jede Seitenbearbeitung als Eintrag veröffentlicht, bringt ihren Lesern das Abbestellen bei. Einträge werden nach dem eigenen date einer Seite geordnet, ersatzweise nach dem letzten Commit, der sie berührt hat, und nur die Standardversion jeder Quelle steuert etwas bei — ein versionierter Changelog wiederholt also nicht jeden Eintrag einmal je Version.

Die Sektion, auf die er üblicherweise zeigt, ist eine Release-Historie, deren Seiten je ein date tragen.

Erzeugt, nicht geschrieben

SchlüsselGeschrieben vonEnthält
resolvedSourcesdem BuildDas Manifest: welche Collection welches Präfix bedient
layerVersiondem Buildduxts eigene Version, für den Fußbereich
layerRepositorydem Buildduxts eigenes Repository, für den Fußbereich

Eines der drei von Hand zu setzen wird beim nächsten Build überschrieben.

War diese Seite hilfreich?