GraphQL Schema
在 Payload 中,schema 由你的 collections 和 globals 控制。你只需运行生成命令,整个 schema 就会自动创建完成。
Schema 生成脚本
将 @payloadcms/graphql
安装为开发依赖:
pnpm add @payloadcms/graphql -D
运行以下命令生成 schema:
pnpm payload-graphql generate:schema
自定义字段 Schema
对于 array
、block
、group
和命名 tab
字段,你可以生成顶层的可复用接口。以下是一个 group 字段配置示例:
{
type: 'group',
name: 'meta',
interfaceName: 'SharedMeta', // highlight-line
fields: [
{
name: 'title',
type: 'text',
},
{
name: 'description',
type: 'text',
},
],
}
将会生成:
// 会生成一个顶层的可复用类型
type SharedMeta {
title: String
description: String
}
// 并在生成的 schema 中被引用
type Collection1 {
// ...其他字段
meta: SharedMeta
}
上面的示例会将所有定义输出到相对于 Payload 配置文件的 ./graphql/schema.graphql
文件中。默认情况下,文件会输出到当前工作目录下的 schema.graphql
。
添加 npm 脚本
重要提示
Payload 需要能够找到你的配置文件才能生成 GraphQL schema。
Payload 会自动尝试定位你的配置文件,但有时可能无法找到。例如,如果你在 /src
目录或类似结构中工作,你需要通过环境变量手动告诉 Payload 配置文件的位置。
如果适用这种情况,可以创建一个 npm 脚本来简化类型生成:
// package.json
{
"scripts": {
"generate:graphQLSchema": "cross-env PAYLOAD_CONFIG_PATH=src/payload.config.ts payload-graphql generate:schema"
}
}
现在你可以运行 pnpm generate:graphQLSchema
来轻松生成 schema。