コンテンツにスキップ
Blume
Esc
↑↓移動↵開く⌘Jプレビュー
このページの内容

Sanity

sanity() ソースを使って Sanity データセットからドキュメントを取得します。GROQ クエリでドキュメントを選択し、その Portable Text 本文は Markdown に変換されます。

組み込みの sanity() アダプターは GROQ クエリを実行し、各ドキュメントのフィールドをフロントマターに、Portable Text の本文を Markdown にマッピングします。Markdown 文字列フィールドに格納された本文は記述されたとおりにそのまま渡されます。ただし、Web、メール、電話、相対アドレスのいずれでもないリンク(たとえば javascript: URL)は、ラベルのみが残ります。このアダプターはランタイム依存関係として @sanity/client を宣言しています。これはオプションのピア依存関係であるため、このソースを使用する場合にのみインストールしてください。

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" },
      }),
    ],
  },
});

非公開データセット用の読み取りトークンは、SANITY_TOKEN 環境変数から取得されます。この環境変数はアダプターが宣言しているため、未設定の場合は blume dev と blume build が警告を出します。公開データセットはトークンがなくても動作します。Sanity は、トークンなしで実行された非公開データセットのクエリに対して、エラーではなくドキュメントが 0 件の結果を返します。そのため、クエリで何も見つからず、かつトークンが未設定の場合、ソースはその旨を伝える BLUME_MISSING_SECRET 警告を追加します。--preview 指定時、アダプターは previewDrafts パースペクティブで下書きを読み込みます。@sanity/client 8 はこのパースペクティブが drafts に名称変更されたと報告しますが、旧名称も引き続き動作します。また、@sanity/client 6 は旧名称のみを受け付けます。カスタムの Portable Text ブロックタイプは、エンジンの serializers オプションを通じて Blume コンポーネントにマッピングされます。このオプションは、sanitySource を直接構築して custom() に渡す場合に利用できます。serializers を設定すると、そのソースのページは MDX として書き出されるため、シリアライザーが返すコンポーネントやディレクティブがレンダリングされます。

開発者向けドキュメントの CMS として Sanity を使うでは、編集者が Sanity Studio で執筆し、開発者は Markdown を Git で管理し、下書きは保護されたプレビューでのみ表示されるという構成を、最初から最後まで順を追って説明しています。

最終更新

このページは役に立ちましたか?