Sanity
Hol dir mit der Quelle sanity() Dokumente aus einem Sanity-Dataset – eine GROQ-Abfrage wählt die Dokumente aus, und ihre Portable-Text-Inhalte werden zu Markdown.
Der integrierte sanity()-Adapter führt eine GROQ-Abfrage aus. Dabei ordnet er die Felder jedes Dokuments dem Frontmatter zu und wandelt den Portable-Text-Inhalt in Markdown um. Als Laufzeitabhängigkeit deklariert der Adapter @sanity/client. Das ist ein optionaler Peer, du musst ihn also nur installieren, wenn du diese Quelle verwendest.
import { defineConfig } from "blume";
import { filesystem, sanity } from "blume/sources";
export default defineConfig({
content: {
sources: [
filesystem({ root: "docs" }),
sanity({
prefix: "guides",
projectId: "abc123",
dataset: "production",
query: `*[_type == "guide"]`,
// Field paths default to title / slug.current / body / _updatedAt
fields: { slug: "slug.current", body: "content" },
}),
],
},
});
Ein Lese-Token für ein privates Dataset kommt aus der Umgebungsvariable SANITY_TOKEN, die der Adapter deklariert. Eigene Portable-Text-Blocktypen ordnest du über die Engine-Option serializers Blume-Komponenten zu. Diese Option steht dir zur Verfügung, wenn du sanitySource direkt erstellst und an custom() übergibst. Sobald du serializers setzt, werden die Seiten der Quelle als MDX geschrieben. So werden Komponenten oder Direktiven, die ein Serializer zurückgibt, auch gerendert.