All Systems Operational
Powered By
profound-logo

快速入门

一篇关于模式的文章

生成类型安全的 Zod 模式

此功能允许你以类型安全的 Zod 模式形式获取模式描述,提供:

  • TypeScript 优先的模式校验
  • 静态类型推断

了解更多:https://zod.dev

设置

要获取 Zod 模式,你需要:

  1. 加载所需依赖
  2. 使用 cms-renderer 中的工具创建脚本

项目结构

apps/
  web/
    app/
      page.tsx
    scripts/
      generated-schema.ts   # 脚本文件

脚本:generated-schema.ts

import { fetchAllCustomSchemaFields, saveZodSchemaCode } from 'cms-renderer/lib/custom-schemas';
import { cmsConfig } from 
Continue Reading
NextJson 与 Claude 代码›
'../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);
});

CMS 配置示例

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

package.json 配置

注意:如果你没有 tsconfig.json,请移除 --tsconfig 标志。

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

运行脚本

bun run generate-schemas

示例输出:

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

更新后的项目结构

apps/
  web/
    app/
      page.tsx
    scripts/
      generated-schema.ts
    generated/
      cms-schemas.ts   # 生成的 Zod 模式

在 page.tsx 中的用法

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

// 用于类型安全的解析
petFoodPostSchema.parse(obj);

注意事项

  • 检查生成的文件以了解你的模式结构
  • 每当你的模式发生变化时重新运行脚本:
bun run generate-schemas
  • 你可以将其集成到开发或构建流程中
  • 通过管理面板更新模式,然后在本地重新生成

混合

渲染器项目参数化路由组件类型SSE设置管理面板代理支持编辑模式的静态渲染模板构建器中的脚本编写Create Profound Next

无头

快速入门Json 与 Claude 代码组件 Zod 拉取

Mcp

Mcp

Cms 功能

功能文档模板模板构建器功能翻译功能组织功能

激励

我们的方法

术语

混合式与无头式对比
profound-logoProfound CMS
⌘K
Admin