Camadas e substituição
O que uma camada Nuxt te dá, o que te tira, e que caminhos não resolvem como se leem.
O duxt é uma camada, não um modelo. Estende-la e cada ficheiro que ela traz passa a ser substituível: coloca um ficheiro com o mesmo nome no teu projeto e o Nuxt resolve o teu primeiro. Nada é copiado para o teu repositório, por isso uma atualização é um salto de versão e não uma fusão.
O que isso significa na prática
| Queres | Fazes |
|---|---|
| Mudar um texto, um link, um interruptor | Definir a chave no teu app/app.config.ts |
| Substituir uma peça do layout | Criar app/components/DuxtFooter.vue no teu projeto |
| Reestilizar o tema | Redefinir uma variável CSS na tua própria folha de estilo |
| Acrescentar uma página | Escrever Markdown em docs/ |
A ordem é deliberada: os três primeiros são compromissos progressivamente maiores, e um componente que substituis é um componente que passas a manter. Ver Substituir o tema.
O que te tira
Uma camada nunca conhece o projeto que assenta sobre ela. Duas consequências que se sentem:
@é teu, não da camada. O alias pertence a quem estende o duxt, por isso as importações da própria camada usam@duxt. O teu continua a apontar para o teuapp/.- Uma coleção resolve contra a camada, não contra ti. O Content regista como
raiz de cada coleção a camada que a declarou, pelo que um
cwdrelativo na configuração do próprio duxt apontaria para dentro do duxt. A camada calcula por isso um caminho absoluto no carregamento, o que funciona porquecontent.config.tsé código executado e não um ficheiro de dados — e é sobre essa junção que assenta todo o atalhosources.
Porque é feito assim
A alternativa é um modelo inicial: nuxi init, e o tema passa a ser uma cópia
dentro do teu repositório. Isso dá liberdade total e nenhum caminho de
atualização — cada melhoria no tema é um diff que alguém tem de aplicar à mão.
Uma camada inverte isso: herdas as melhorias e só pagas onde discordaste.
O que fixa tudo isto é a superfície pública. Um componente, uma página ou uma
chave de app.config que podes substituir é um nome do qual dependes, por isso
renomear um é uma alteração incompatível da camada — que é precisamente o que a
referência documenta.