Saltar para o conteúdo
Blume
Esc
↑↓navegar↵abrir⌘Jpré-visualizar
Nesta página

MDX remoto

Busque Markdown e MDX via HTTP a partir de um repositório do GitHub ou de uma URL raw com a source mdxRemote(), renderizados com todos os componentes do Blume.

O adapter nativo mdxRemote() busca arquivos .md/.mdx raw via HTTP. Você pode listar os arquivos a partir de uma subárvore de um repositório do GitHub (github) ou informá-los explicitamente em relação a uma URL base raw (url + files):

import { defineConfig } from "blume";
import { filesystem, mdxRemote } from "blume/sources";

export default defineConfig({
  content: {
    sources: [
      filesystem({ root: "docs" }),
      // The docs/ subtree of acme/sdk, mounted under /sdk
      mdxRemote({
        prefix: "sdk",
        github: { owner: "acme", repo: "sdk", ref: "main", path: "docs" },
      }),
    ],
  },
});

Para listar os arquivos você mesmo, aponte url para uma URL base raw:

mdxRemote({
  prefix: "sdk",
  url: "https://raw.githubusercontent.com/acme/sdk/main/docs",
  files: ["intro.mdx", "guide.mdx"],
});

include (padrão ["**/*.{md,mdx}"]) filtra os arquivos pelo caminho deles dentro de path, do mesmo jeito que o include de uma source filesystem(): um padrão que começa com ! exclui os arquivos que correspondem a ele (["**/*.mdx", "!drafts/**"]). Com github, a source lista a árvore inteira do repositório em ref e mantém os arquivos que estão dentro de path. Se não houver nada dentro de path nessa ref, a source não lê nenhuma página e emite o aviso BLUME_SOURCE_PATH_MISSING. O GitHub limita a listagem (100.000 entradas ou 7 MB para o repositório inteiro, seja qual for o path) e, acima desse limite, a source emite o aviso BLUME_SOURCE_TRUNCATED: nesse caso, liste os arquivos com url e files.

Um link relativo entre arquivos remotos ([Errors](./02-errors.mdx)) leva à página em que o arquivo vinculado é publicado, sem o prefixo de ordenação na rota. Isso vale na página renderizada, na cópia em Markdown da página e no llms-full.txt, e no que o assistente lê, e o blume validate verifica esse link da mesma forma.

O token de um repositório privado é lido da variável de ambiente GITHUB_TOKEN. O token nunca é inserido na sua configuração nem no output gerado, e só é enviado para os próprios hosts do GitHub (api.github.com, raw.githubusercontent.com), nunca para uma base url personalizada. Um repositório público funciona sem ele. Com github, o adapter declara essa variável, então o blume dev e o blume build emitem o aviso BLUME_MISSING_SECRET quando ela não está definida: a listagem de arquivos passa pela API do GitHub, que permite 60 requisições não autenticadas por hora. Uma url raw só lê arquivos, então nada é avisado de antemão; quando o GitHub recusa um arquivo com 401, 403 ou 404 enquanto GITHUB_TOKEN não está definida, o aviso do arquivo ignorado informa que a variável não está definida.

Um arquivo escrito para ser lido no GitHub costuma começar com um # Heading, enquanto o Blume renderiza o title da página como o <h1> dela. Quando a primeira linha de uma página remota é um h1 igual ao title do front matter dela, ou quando o front matter não define nenhum title, esse título é removido e o texto dele passa a ser o título da página, de modo que a página mostre um único <h1>. Se o primeiro título for diferente do title, ele é mantido.

As páginas remotas são renderizadas com total fidelidade de MDX e componentes: o conteúdo delas é materializado em um diretório de staging oculto e renderizado pelo Astro junto com a sua documentação local, então callouts, tabs e todos os outros componentes do Blume continuam funcionando.

Como em toda source remota, as páginas buscadas ficam em cache para builds offline e são atualizadas com blume sync. Veja Cache e builds offline.

O guia Monte um único portal de documentação a partir de vários repositórios do GitHub usa essa source para trazer a pasta de documentação de cada repositório para um único site, fixado em uma release que só muda quando você a altera.

Última atualização a

Esta página foi útil?