All Systems Operational
Powered By
profound-logo

Démarrage rapide

Un article à propos des schémas

Continue Reading
NextJson Et Claude Code›

Générer des schémas Zod à typage sécurisé

Cette fonctionnalité vous permet d'obtenir la description de votre schéma sous la forme d'un schéma Zod à typage sécurisé, offrant :

  • Validation de schéma orientée TypeScript
  • Inférence de types statique

En savoir plus : https://zod.dev

Configuration

Pour récupérer votre schéma Zod, vous devrez :

  1. Charger les dépendances requises
  2. Créer un script utilisant les utilitaires de cms-renderer

Structure du projet

apps/
  web/
    app/
      page.tsx
    scripts/
      generated-schema.ts   # fichier de script

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 n’est pas défini. Définissez-le dans votre environnement ou votre fichier .env.'
    );
  }

  if (!websiteId) {
    throw new Error(
      '[generate-schemas] CMS_WEBSITE_ID n’est pas défini. Définissez-le dans votre environnement ou votre fichier .env.'
    );
  }

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

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

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

Exemple de configuration CMS

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

Configuration de package.json

Remarque : si vous n'avez pas de tsconfig.json, supprimez l'option --tsconfig.

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

Exécution du script

bun run generate-schemas

Exemple de sortie :

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

Structure du projet mise à jour

apps/
  web/
    app/
      page.tsx
    scripts/
      generated-schema.ts
    generated/
      cms-schemas.ts   # schéma Zod généré

Utilisation dans page.tsx

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

// À utiliser pour un parsing à typage sécurisé
petFoodPostSchema.parse(obj);

Notes

  • Inspectez le fichier généré pour comprendre la structure de votre schéma
  • Relancez le script chaque fois que votre schéma change :
bun run generate-schemas
  • Vous pouvez intégrer cela à votre flux de travail de développement ou de build
  • Mettez à jour les schémas via le panneau d'administration, puis régénérez localement
"cms-renderer"
:
"0.3.1"
,
"zod": "^4.3.6",
"...": "..."
},
"devDependencies": {
"tsx": "^4.21.0",
"object-hash": "^3.0.0",
"...": "..."
}
}

Hybride

Renderer ProjetRoutage paramétriqueTypes de composantsSseConfigurer Proxy Panneau AdminRendu statique avec prise en charge du mode éditionScripts dans le générateur de modèlesCreate Profound Next

Sans tête

Démarrage rapideJson Et Claude CodeRécupération du schéma Zod du composant

Mcp

Mcp

fonctionnalités du CMS

Feat Docs TemplateGénérateur de modèles de fonctionnalitéFonctionnalité TraducteurFonctionnalité Organisation

Motivation

Notre approche

Terminologie

Hybride Vs Sans Interface
profound-logoProfound CMS
⌘K
Admin