Validar
O blume validate verifica cada link do seu conteúdo — páginas, âncoras, assets e, opcionalmente, URLs externas — e faz o CI falhar quando algum está quebrado.
O blume validate lê seu conteúdo do mesmo jeito que um build faz e verifica cada link que encontra. Ele não gera nem compila nada, então é a verificação rápida para colocar antes do blume build:
blume validate
- Links internos de página (
/guides/intro,./sibling) precisam levar a uma página real, e os quebrados são reportados como erros. Umhrefem string de um componente (<Card href="./install">) é verificado da mesma forma, mas uma expressãohref={…}não é. - Links de âncora (
#section,/guides/intro#setup) precisam corresponder a uma âncora na página de destino, que pode ser o id de um heading (gerado ou fixado) ou o atributoidde um elemento HTML bruto. As âncoras não encontradas são reportadas como avisos. Ids dentro de blocos de código, código inline, comentários HTML e blocos<Prompt>não contam. - Links de assets são verificados onde o arquivo fica. Um caminho absoluto (
/logo.png) é procurado no diretóriopublic/, e uma imagem incorporada com caminho relativo () é procurada na própria pasta da página. Um link simples para um caminho relativo continua sendo resolvido como uma rota do site. Só as imagens incorporadas passam pelo pipeline de imagens. - Links externos só são verificados com
--external, que vem desativado por padrão porque precisa de acesso à rede. Links mortos (404/410/inacessível) são erros. Respostas com limite de taxa ou transitórias (403/429/5xx/timeout) são avisos.
O que conta como página
Os links são resolvidos considerando tudo o que o site gerado serve, não só as páginas Markdown. Isso inclui páginas .astro personalizadas, o índice do changelog gerado e cada redirect configurado. Em um site multilíngue, também inclui a URL de fallback de uma página não traduzida em cada locale. Uma página que falha no parse é reportada junto com os problemas de links. Uma página que nunca carrega é um ponto cego da validação de links, então ela não pode passar como resultado limpo.
Flags
--external— também verifica linkshttp(s)externos pela rede.--strict— também sai com código diferente de zero quando há avisos. As notas de nível info continuam sendo só informativas.--json— emite os diagnósticos como JSON no stdout em vez do relatório no terminal.
Diagnósticos
| Código | Severidade | Significado |
|---|---|---|
BLUME_BROKEN_LINK |
erro | Um link interno aponta para uma rota que nenhuma página serve. |
BLUME_BROKEN_ANCHOR |
aviso | A página existe, mas não tem nenhuma âncora correspondente ao fragmento. |
BLUME_BROKEN_ASSET |
aviso | Um caminho absoluto não está em public/, ou uma imagem incorporada com caminho relativo não está ao lado da página. |
BLUME_ASSETS_UNCHECKED |
info | Não existe um diretório public/, então os caminhos absolutos de assets não foram verificados. |
BLUME_DEAD_LINK |
erro ou aviso | Um link externo (com --external) retornou 404/410 ou estava inacessível (erro), ou teve uma resposta transitória 403/429/5xx/timeout (aviso). |
O código de saída é o contrato: erros fazem o comando sair com código diferente de zero, e o --strict faz o mesmo com os avisos.
Saída JSON
Com --json, o blume validate (e o blume doctor) escreve um objeto no stdout. Esse objeto tem uma lista diagnostics e um summary com as contagens por severidade. Cada entrada da lista traz:
code,severityemessage- o
filerelativo à raiz do projeto, comlineecolumnquando o problema tem uma localização - uma
suggestion - um
docsUrlapontando para a página que explica o código
O código de saída não muda. Assim, o mesmo comando pode servir de verificação no CI e alimentar uma integração com o editor.