profound-logoProfound CMS
⌘K
Admin
Theme
DocsTutorialBlogPhilosophy
DocsTutorialBlogPhilosophy

Hybrid

Parametrično usmerjanjeTypes of ComponentsSetup server sent events (SSE) content refetchInstall Profound CMS as a proxyPisanje skript v graditelju predlogProject ScaffoldingMedijska knjižnica

Brez glave

Hitri začetekSplit Screen JSON Component Builder with LLMComponent Zod Pull

REST API

Pregled REST API-jagetPovezava spletnega mesta z API-jemgetGET /routesgetGET /routegetGET /blocksgetGET /blocks/with-cel-cachegetGET /blocks/generatedgetGET /componentsgetGET /components/{name}getGET /dataset/{schema_name}getGET /content-changes (SSE)patchPATCH /dataset/{schema_name}postPrevajanje objavepatchPATCH /translationsgetGET /usagepostPOST /csvpatchPATCH /csv
All Systems Operational
Powered Byprofound-logo
Theme

Component Zod Pull

Pridobite opis Zod svojih komponent v času prevajanja s pomočjo skripta.

Ta funkcija vam omogoča, da dobite opis svoje komponente v obliki tipno varnega opisa »Zod«, ki zagotavlja preverjanje shem po načelu TS-first in statično sklepanje tipov za vašo vsebino.

https://zod.dev

Da prenesemo našo shemo Zod, bomo naložili nekaj odvisnosti in ustvarili skript, ki uporablja nekatere pripomočke iz našega cms-renderer

Začnimo z našo strukturo projekta

apps/
 web/
 app/
   page.tsx
 scripts/
   generate-schemas.ts // tukaj se nahaja naš skript

Zdaj bomo uredili datoteko generated-schema.ts

import { fetchAllCustomSchemaFields, saveZodSchemaCode } from 'cms-renderer/lib/custom-schemas';
import { cmsConfig } from '../lib/cms-config'; // uvažam svojo konfiguracijo

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

  if (!cmsUrl) {
    throw new Error(
      '[generate-schemas] NEXT_PUBLIC_CMS_API_URL ni nastavljen. Nastavite ga v svojem okolju ali datoteki .env.'
    );
  }
  if (!websiteId) {
    throw new Error(
      '[generate-schemas] NEXT_PUBLIC_PROFOUND_WEBSITE_ID ni nastavljen. Nastavite ga v svojem okolju ali datoteki .env.'
    );
  }
  if (!apiKey) {
    throw new Error(
      '[generate-schemas] PROFOUND_API_KEY ni nastavljen. Nastavite ga v svojem okolju ali datoteki .env.'
    );
  }

  const schemas = await fetchAllCustomSchemaFields({ cmsUrl, websiteId, apiKey });

  if (schemas.length === 0) {
    throw new Error(
      '[generate-schemas] API ni vrnil nobene komponente. Preverite, ali je PROFOUND_API_KEY veljaven in kaže na pravo spletno mesto.'
    );
  }

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

  console.log('[generate-schemas] Končano.');
}

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

Vaš CmsConfig bi moral izgledati takole

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

V naši datoteki package.json določimo, kako zaženemo skript in nekaj odvisnosti

OPOMBA: Če nimate tsconfig, lahko odstranite zastavico --tsconfig in njeno vrednost

{
  "name": "web",
  "version": "0.1.0",
  "type": "module",
  "private": true,
  "scripts": {
    "generate-schemas": "tsx --tsconfig tsconfig.json scripts/generate-schemas.ts",
    "...": "..."
  },
  "dependencies": {
    "cms-renderer": "0.3.1",
    "zod": "^4.3.6",
    "...": "..."
  },
  "devDependencies": {
    "tsx": "^4.21.0",
 "object-hash": "^3.0.0",
    "...": "..."
  }
}

Zdaj, ko zaženemo

$ bun run generate-schemas
tsx --tsconfig tsconfig.json scripts/generate-schemas.ts
[generate-schemas] Končano.

Dobili bi morali podoben izhod in vidimo lahko novo datoteko v strukturi našega projekta

apps/
 web/
 app/
   page.tsx
 scripts/
   generated-schema.ts // tukaj se nahaja naš skript
 generated/
   cms-schema.ts // generirana shema Zod

Datoteko lahko pregledate in vidite, kako izgleda vaša shema. Za posodobitev te datoteke morate znova zagnati ukaz bun run generate-schemas, ki ga lahko povežete s svojim delovnim tokom dev ali build.

Te objekte Zod lahko nato pridobimo v datoteko page.tsx takole

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

// pokličite petFoodPostSchema.parse(obj) za tipno varno razčlenjevanje objektov

Svojo komponento lahko posodobite iz skrbniške nadzorne plošče in znova prenesete posodobljeno shemo za lažji razvoj

Continue Reading
Previous‹Split Screen JSON Component Builder with LLM