Configuração
Cada chave sob duxt em app.config.ts — o que controla e quando é lida.
Tudo o que se segue vive sob duxt no teu app/app.config.ts. Como a
combinação funciona, e porque os arrays substituem em vez de acrescentar, está
em Configuração.
Site
| Chave | Por omissão | O que controla |
|---|---|---|
title | nenhum | O nome na barra de navegação e no título de SEO |
logo | nenhum | Um logótipo em vez do par de ícone e nome — ver abaixo |
version | nenhuma | O distintivo ao lado |
organization | nenhuma | Quem publica o site, para schema.org — ver abaixo |
locales | os sete | Que idiomas da camada este site serve |
breadcrumb | true | false retira o trilho por cima do título da página |
pageIcon | nenhum | Ícone para páginas sem um próprio — o da secção ganha |
packageManagers | pnpm, npm, yarn, bun | Que gestores um bloco de comando oferece, por essa ordem |
requestSamples | sete de doze | Que amostras de código o cliente de ensaio oferece — ver Amostras de pedido |
sampleLanguages | nenhuma | Gramáticas Shiki adicionais, para x-codeSamples numa linguagem que nenhuma amostra nomeia |
poweredBy | ligado | false retira a linha «Powered by duxt» do rodapé |
logo
| Campo | Tipo | Notas |
|---|---|---|
src | string | A marca. Sem valor fica o ícone genérico ao lado de title |
srcDark | string | Trocado por CSS sob a classe dark, não por script |
alt | texto | Recai em title |
Definir um é Dá identidade ao teu site.
organization
O nó Organization que os motores de busca e os resumos de IA leem para nomear
uma fonte. Ausente até o definires: o duxt renderiza a documentação de outros e
não adivinha de quem.
| Campo | Tipo | Notas |
|---|---|---|
name | texto | O nome de quem publica. Sem ele não se publica nada |
url | string | O site dessa entidade. Recorre a site.url |
logo | string | Absoluto, ou um caminho desde a raiz; quadrado e com 112px ou mais |
Navegação e ligações
Uma entrada de secção é uma ligação mais um campo próprio:
| Campo | Tipo | Notas |
|---|---|---|
pageIcon | string | Ícone para as páginas desta secção que não definam um. Prevalece sobre duxt.pageIcon; o frontmatter de uma página continua a ganhar |
Útil onde as páginas não podem levar ícone — o frontmatter de um ADR está fixo em
title, description, status e date, pelo que o registo de decisões seria
apresentado sem nenhum.
| Chave | Por omissão | O que controla |
|---|---|---|
navigation | uma entrada | Ligações da barra; uma entrada com children vira um menu |
sections | vazio | A segunda linha da barra — as partes de topo da documentação |
links | vazio | Ligações com ícone à direita da barra |
aside | só o título | title e links sob o índice |
footer | vazio | copyright e legal |
landing | uma ação | A página em / |
A maioria é entregue vazia, por duas razões diferentes. links, aside.links,
footer.legal, title, version e o texto da página inicial nomeiam um projeto
concreto — um repositório, uma comunidade, um aviso legal, um nome, uma versão
publicada, uma frase sobre o que faz — e pertencem a quem gere o site. sections nomeia as partes de
uma árvore de documentação, e a árvore é tua: quatro separadores a apontar
para nomes de pasta que a camada adivinhasse não levariam a lado nenhum.
Define-o quando a tua documentação tiver secções; até lá a linha não é
apresentada e a barra lateral mostra a árvore inteira, que é a forma certa para
documentação sem secções.
Uma linha por fonte. Uma entrada pertence à fonte sob cujo prefixo de URL
está, e a linha mostra as entradas da fonte em que o leitor se encontra — um
site com a documentação na raiz e outra coisa em /demo escreve assim uma só
lista sections, e cada área desenha a sua parte dela. Uma secção gerada por
baixo de uma área (/demo/api) pertence a essa área em vez de ser uma. Um site
com uma única fonte tem uma área, cada entrada está lá dentro, e a linha é
exactamente a lista tal como foi escrita.
A página inicial
A página em / desenha três faixas, e cada uma está ausente até a sua chave
estar definida.
| Chave | Por omissão | O que desenha |
|---|---|---|
badge | nenhum | A pastilha por cima do título — texto, ou um objeto de distintivo |
headline | nenhum | O h1; recai sobre title |
description | nenhuma | O parágrafo por baixo, e a meta description da página |
actions | uma, «Ler a documentação» | Os botões do bloco principal; uma ação sem to resolve para a primeira secção |
command | nenhum | Um comando de instalação copiável sob os botões |
preview | nenhum | Uma página deste site, incorporada numa janela de browser |
features | vazio | A grelha de cartões |
command é uma string simples, não texto: um comando de shell é igual em
todos os idiomas, e um traduzido por engano é um que não corre. A camada não
entrega nenhum — não sabe como se chama o teu projeto, pela mesma razão por que
links está vazio.
Não há chamada à ação final, deliberadamente. Os botões do bloco principal são a chamada; repeti-los sob uma grelha de cartões pede a um leitor acabado de chegar que decida duas vezes.
badge é entregue vazio pela mesma razão que links: uma pastilha por cima do
título diz algo sobre o estado de um projeto — «beta», «a v2 saiu» — e a camada
nada sabe sobre o estado do teu. Um texto é a forma curta; o objeto acrescenta
ícone, cor e destino.
Campo de badge | Tipo | Notas |
|---|---|---|
label | texto | Obrigatório. {version} é substituído pela version do site |
icon | string | Qualquer nome do Iconify |
variant | string | default, secondary, outline, success, destructive |
to | string | Faz de toda a pastilha uma ligação |
external | boolean | O separador novo |
badge: {
label: '{version} lançada',
icon: 'lucide:rocket',
variant: 'success',
to: 'https://github.com/acme/sdk/releases/latest',
external: true
}
preview é uma janela viva, não uma imagem. Incorpora uma página deste site
num enquadramento de browser que o leitor pode percorrer, navegar e cujo tema
pode mudar sem sair da página inicial. O enquadramento só é montado quando a
faixa entra no ecrã, e nunca durante a renderização no servidor — um iframe no
HTML inicial é um segundo carregamento completo a competir com o primeiro.
Campo de preview | Tipo | Notas |
|---|---|---|
to | string | A página a incorporar; por omissão, a primeira secção |
height | string | Qualquer comprimento CSS. Por omissão 32rem, 24rem sob sm |
src | string | Uma captura EM VEZ da página viva |
srcDark | string | Serve o modo escuro; sem ele, src serve ambos |
alt | texto | O texto alternativo da imagem e o nome acessível do enquadramento |
O enquadramento vivo carrega a aplicação uma segunda vez. Um site que prefira
não pagar isso define src e obtém a mesma janela à volta de uma imagem fixa.
Forma de uma ligação
| Campo | Tipo | Notas |
|---|---|---|
label | texto | Obrigatório |
to | string | Um caminho de documentação é localizado; um URL não |
icon | string | Qualquer nome do Iconify, p. ex. lucide:rocket |
description | texto | Mostrada num menu suspenso da barra |
external | boolean | O separador novo e a seta — nunca o roteamento |
children | DuxtLink[] | Transforma uma entrada da barra num menu suspenso |
variant | variante de botão | Só landing.actions |
Todos os campos marcados como texto aceitam um literal, uma chave i18n ou um registo por locale — ver Localização.
Fontes
| Chave | Lida em | O que controla |
|---|---|---|
sources | tempo de compilação | As fontes de documentação |
sourceOptions | tempo de compilação | Como essas fontes se tornam prefixos de URL |
versions | execução | Substitui as versões derivadas quando precisam de rótulos ou descrições |
Ambas as chaves de fonte têm uma página própria.
locales é a terceira chave de compilação: alterar qualquer uma das três exige
nova compilação.
O feed
/rss.xml está vazio até feed.path nomear uma secção:
feed: { path: '/changelog', title: 'o meu projeto — lançamentos' }
Desligado por omissão, de propósito. Um feed é uma lista de coisas que
aconteceram, e uma página de referência editada não é um acontecimento — um
site que publica cada edição como item ensina os seus leitores a cancelar a
subscrição. Os itens são ordenados pela date da própria página, recorrendo ao
último commit que lhe tocou, e só a versão predefinida de cada fonte contribui,
por isso um changelog versionado não repete cada entrada uma vez por versão.
A secção para a qual costuma apontar é um
histórico de versões, cujas páginas trazem cada uma a sua
date.
Gerado, não escrito
| Chave | Escrito por | Contém |
|---|---|---|
resolvedSources | a compilação | O manifesto: que coleção serve que prefixo |
layerVersion | a compilação | A versão do duxt, para o rodapé |
layerRepository | a compilação | O repositório do duxt, para o rodapé |
Definir qualquer um dos três à mão é sobrescrito na compilação seguinte.