All Systems Operational
Powered By
profound-logo
profound-logoProfound CMS
⌘K
Admin

Component Zod Pull

スクリプトを使ってコンポーネントの Zod 記述をコンパイル時に取得します

Continue Reading
Previous‹Jsonとクロードコード

ハイブリッド

レンダラー・プロジェクトパラメトリックルーティングコンポーネントの種類Sse管理パネルプロキシの設定編集モード対応の静的レンダリングテンプレートビルダーでのスクリプティングCreate Profound Next

ヘッドレス

クイックスタートJsonとクロードコードComponent Zod Pull

Mcp

Mcp

CMS機能

Feat Docs Templateテンプレートビルダー機能Feat トランスレーターFeat 組織

やる気

私たちのアプローチ

専門用語

ハイブリッド対ヘッドレス

この機能を利用すると、スキーマの記述を、TS を最優先としたスキーマ検証と静的型推論を提供する型安全な「Zod」記述として取得できます。

https://zod.dev

Zod スキーマを取得するために、いくつかの依存関係を読み込み、cms-renderer のユーティリティを利用するスクリプトを作成します。

まずはプロジェクト構成から始めましょう。

theme={null}
apps/
 web/
 app/
   page.tsx
 scripts/
   generated-schema.ts // スクリプトが存在する場所

次に、この generated-schema.ts ファイルを編集します。

generated-schema.ts theme={null}
import { fetchAllCustomSchemaFields, saveZodSchemaCode } from 'cms-renderer/lib/custom-schemas';
import { cmsConfig } from '../lib/cms-config'; // 設定をインポート

async function main() {
  const { cmsUrl, websiteId } = cmsConfig;

  if (!cmsUrl) {
    throw new Error(
      '[generate-schemas] NEXT_PUBLIC_CMS_API_URL が設定されていません。環境変数または .env ファイルに設定してください。'
    );
  }
  if (!websiteId) {
    throw new Error(
      '[generate-schemas] CMS_WEBSITE_ID が設定されていません。環境変数または .env ファイルに設定してください。'
    );
  }

  await saveZodSchemaCode(
    await fetchAllCustomSchemaFields(cmsConfig),
    './generated/cms-schemas.ts'
  );

  console.log('[generate-schemas] 完了しました。');
}

main().catch((err) => {
 console.error('[generate-schemas] 失敗しました:', err);
  process.exit(1);
});

CmsConfig は次のようになります。

theme={null}
export const cmsConfig = {
  cmsUrl: process.env.NEXT_PUBLIC_CMS_API_URL,
  apiKey: process.env.CMS_API_KEY,
  websiteId: '...',
};

package.json 内で、スクリプトの実行方法といくつかの依存関係を定義します。

注意: tsconfig がない場合は、--tsconfig フラグとその値を削除できます。

package.json theme={null}
{
  "name": "web",
  "version": "0.1.0",
  "type": "module",
  "private": true,
  "scripts": {
    "generate-schemas": "tsx --tsconfig tsconfig.json scripts/generate-schemas.ts",
    "...": "..."
  },

そして、次のコマンドを実行した後。

$ bun run generate-schemas
tsx --tsconfig tsconfig.json scripts/generate-schemas.ts
[generate-schemas] 完了しました。

同様の出力が得られ、プロジェクト構成内に新しいファイルが作成されていることが確認できます。

theme={null}
apps/
 web/
 app/
   page.tsx
 scripts/
   generated-schema.ts // スクリプトが存在する場所
 generated/
   cms-schema.ts // 生成された Zod スキーマ

中身を確認すると、スキーマの構造を確認できます。このファイルを更新するには、bun run generate-schemas コマンドを再実行してください。これを dev や build ワークフローに組み込むこともできます。

その後、page.tsx ファイルでこれらの Zod オブジェクトを次のように読み込むことができます。

page.tsx theme={null}
import type { PetFoodPost, SiteConfig } from '@/generated/cms-schemas';
import { petFoodPostSchema } from '@/generated/cms-schemas';

// petFoodPostSchema.parse(obj) を呼び出して、オブジェクトを型安全に解析します

管理画面でスキーマを更新し、再度取得すれば、開発が容易になります。

"dependencies": {
"cms-renderer": "0.3.1",
"zod": "^4.3.6",
"...": "..."
},
"devDependencies": {
"tsx": "^4.21.0",
"object-hash": "^3.0.0",
"...": "..."
}
}