Compilação de Documentos e Pipelines
O workspace Renderer apresenta um motor de compilação de templates Markdown altamente flexível e extensível, projetado para combinar elementos gráficos SVG dinâmicos, tipografia codificada em Base64 e arquivos textuais interpolados por tokens.
Fluxo de Pipelines Extensível
O motor compila documentos usando pipelines desacoplados que estão em conformidade com o princípio Open/Closed (SOLID). Pipelines padrão, como o github-profile.pipeline.ts, orquestram o processo de compilação de documentos:
- Execução de Pipelines: O executável principal (
src/index.ts) inicia os pipelines ativos registrados. - Parsing de Templates: Lê os templates brutos, como
src/templates/docs/README.template.mde os templates de cartões SVG. - Substituição de Tokens: Varre os arquivos em busca de espaços reservados de chaves duplas (
\{\{ variavel \}\}) e os substitui pelos dados resolvidos pelo pipeline. - Codificação de Tipografia: Codifica em Base64 o arquivo local de fonte Nunito, injetando-o como um
@font-faceembutido nos elementos SVG. Isso ignora o rígido sandbox de imagem HTML do GitHub e renderiza textos com fidelidade pixel-perfect de marca. - Gravação de Saída: Compila e exporta tanto os cartões SVG planos quanto os arquivos textuais finais
.mdpara a raiz do monorepo ou diretórios de destino dos pacotes.
Referência de Tokens
Os seguintes marcadores de posição (placeholders) são suportados no template padrão do README e são substituídos dinamicamente:
\{\{ name \}\}: O nome de exibição ou login do desenvolvedor.\{\{ user \}\}: O login do usuário no GitHub.\{\{ contributions \}\}: Total de commits, issues, pull requests e revisões de código (code reviews).\{\{ stars \}\}: Total acumulado de estrelas (stargazers) em todos os repositórios contabilizados.\{\{ forks \}\}: Total acumulado de forks em todos os repositórios contabilizados.\{\{ lines_changed \}\}: Total acumulado de adições e deleções de código.\{\{ views \}\}: Soma das visualizações de tráfego das últimas duas semanas.\{\{ repos \}\}: Número de repositórios ativos nos quais o desenvolvedor contribuiu.
Integração de Imagens HTML com Tema Duplo
Para suportar nativamente os esquemas de cores claras e escuras do GitHub dentro de um único documento markdown, o README.md compilado utiliza elementos HTML padrões <picture>.
Durante a compilação, o pipeline grava cartões SVG claros e escuros separados em generated/cards/ (cópias planas: overview-light.svg, overview-dark.svg, header-light.svg, header-dark.svg), que são embutidos no markdown da seguinte forma:
<picture>
<source
media="(prefers-color-scheme: dark)"
srcset="./renderer/generated/cards/overview-dark.svg"
/>
<source
media="(prefers-color-scheme: light)"
srcset="./renderer/generated/cards/overview-light.svg"
/>
<img
alt="Estatísticas do GitHub"
src="./renderer/generated/cards/overview-light.svg"
height="200px"
/>
</picture>
Quando o GitHub renderiza a página de perfil:
- Modo Escuro: Resolve para o cartão
overview-dark.svg, renderizando o fundo escuro e as cores baseadas em tokens. - Modo Claro: Resolve para o cartão
overview-light.svg, exibindo as cores claras de alto contraste. - Esta abordagem evita o uso de hashes de URL frágeis (
#gh-dark-mode-only) e conta com o isolamento nativo e limpo de arquivos para total segurança de renderização.