Contentful
Leia um tipo de conteúdo do Contentful pela Delivery API com a fonte contentful(), convertendo corpos de rich text em Markdown sem precisar instalar nada.
O adaptador embutido contentful() lê as entradas de um tipo de conteúdo pela Content Delivery API e converte o corpo em rich text de cada entrada em Markdown. Títulos, marcações, links, listas, citações, tabelas e assets incorporados viram seus equivalentes em Markdown. Um corpo guardado em um campo de texto longo em Markdown passa do jeito que foi escrito, com uma exceção: um link que não é um endereço web, de e-mail, de telefone ou relativo (uma URL javascript:, por exemplo) mantém só o rótulo, como acontece no rich text. Não precisa instalar nada, porque o adaptador fala diretamente com a API REST.
import { defineConfig } from "blume";
import { contentful, filesystem } from "blume/sources";
export default defineConfig({
content: {
sources: [
filesystem({ root: "docs" }),
contentful({
prefix: "guides",
space: "abc123",
contentType: "guide",
// environment: "master", locale: "en-US"
// Field ids default to title / description / slug / body, and the
// date to sys.updatedAt
fields: { body: "content" },
// Extra Delivery API query parameters
params: { "fields.section": "sdk" },
}),
],
},
});
O token da Delivery API vem da variável de ambiente CONTENTFUL_ACCESS_TOKEN, que o adaptador declara. Com --preview, o adaptador lê os rascunhos pela Preview API usando CONTENTFUL_PREVIEW_TOKEN. A Preview API recusa tokens de delivery, então usar --preview sem um token de preview falha com um erro claro, em vez de recorrer ao CONTENTFUL_ACCESS_TOKEN. Os assets são referenciados a partir da CDN do Contentful em vez de baixados, já que as URLs deles são estáveis. Uma entrada incorporada é mapeada para um componente do Blume pela opção serializers do engine, indexada pelo id do tipo de conteúdo, quando você cria o contentfulSource diretamente e passa ele para custom(). Definir serializers faz a fonte gravar suas páginas como MDX para que os componentes retornados sejam renderizados, e uma entrada incorporada sem serializer é indicada em um comentário. Um link para outra entrada é renderizado como texto simples, porque não existe uma rota para onde ele possa apontar.