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

Component Zod Pull

스크립트를 사용해 컴파일 타임에 컴포넌트의 zod 설명을 가져옵니다

Continue Reading
Previous‹JSON과 Claude 코드

하이브리드

렌더러 프로젝트매개변수 라우팅컴포넌트 유형Sse관리자 패널 프록시 설정편집 모드 지원이 있는 정적 렌더링템플릿 빌더에서 스크립팅Create Profound Next

헤드리스

빠른 시작JSON과 Claude 코드Component Zod Pull

Mcp

Mcp

CMS 기능

기능 문서 템플릿템플릿 빌더 기능기능 번역기기능 조직

동기부여

우리의 접근법

용어

하이브리드 대 헤드리스

이 기능을 사용하면 스키마에 대해 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 is not set. Set it in your environment or .env file.'
    );
  }
  if (!websiteId) {
    throw new Error(
      '[generate-schemas] CMS_WEBSITE_ID is not set. Set it in your environment or .env file.'
    );
  }

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

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

main().catch((err) => {
 console.error('[generate-schemas] Failed:', 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] Done.

유사한 출력이 나타나고 프로젝트 구조에서 새 파일을 확인할 수 있습니다

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",
"...": "..."
}
}