All Systems Operational
Powered By
profound-logo

Snelstart

Een bericht over schema's

Continue Reading
NextJson En Claude Code›

Genereer type-veilige Zod-schema's

Deze functie stelt je in staat je schemaomschrijving te verkrijgen in de vorm van een type-veilig Zod-schema, dat biedt:

  • Schemavalidatie met TypeScript als uitgangspunt
  • Statische type-inferentie

Meer informatie: https://zod.dev

Installatie

Om je Zod-schema op te halen, moet je het volgende doen:

  1. Laad de vereiste afhankelijkheden
  2. Maak een script met behulp van hulpprogramma's uit cms-renderer

Projectstructuur

apps/
  web/
    app/
      page.tsx
    scripts/
      generated-schema.ts   # scriptbestand

Script: generated-schema.ts

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 is niet ingesteld. Stel deze in je omgeving of .env-bestand in.'
    );
  }

  if (!websiteId) {
    throw new Error(
      '[generate-schemas] CMS_WEBSITE_ID is niet ingesteld. Stel deze in je omgeving of .env-bestand in.'
    );
  }

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

  console.log('[generate-schemas] Klaar.');
}

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

Voorbeeld van CMS-configuratie

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

Configuratie van package.json

Opmerking: Als je geen tsconfig.json hebt, verwijder dan de --tsconfig-vlag.

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

Het script uitvoeren

bun run generate-schemas

Voorbeelduitvoer:

tsx --tsconfig tsconfig.json scripts/generate-schemas.ts
[generate-schemas] Klaar.

Bijgewerkte projectstructuur

apps/
  web/
    app/
      page.tsx
    scripts/
      generated-schema.ts
    generated/
      cms-schemas.ts   # gegenereerd Zod-schema

Gebruik in page.tsx

import type { PetFoodPost, SiteConfig } from '@/generated/cms-schemas';
import { petFoodPostSchema } from '@/generated/cms-schemas';

// Gebruik voor type-veilige parsing
petFoodPostSchema.parse(obj);

Opmerkingen

  • Inspecteer het gegenereerde bestand om je schemastructuur te begrijpen
  • Voer het script opnieuw uit wanneer je schema verandert:
bun run generate-schemas
  • Je kunt dit integreren in je ontwikkel- of buildworkflow
  • Werk schema's bij via het beheerderspaneel en genereer ze daarna lokaal opnieuw
"cms-renderer"
:
"0.3.1"
,
"zod": "^4.3.6",
"...": "..."
},
"devDependencies": {
"tsx": "^4.21.0",
"object-hash": "^3.0.0",
"...": "..."
}
}

Hybride

Renderer ProjectParametrische RouteringComponenttypenSseInstellen Beheerderspaneel ProxyStatische Rendering Met Ondersteuning Voor BewerkmodusScripting In SjabloonbouwerCreate Profound Next

Koploos

SnelstartJson En Claude CodeComponent Zod Ophalen

Mcp

Mcp

Cms Functies

Feat Docs TemplateFeat SjabloonbouwerFeat VertalerFeat Organisatie

Motivatie

Onze Aanpak

Terminologie

Hybride Vs Headless
profound-logoProfound CMS
⌘K
Admin