GraphQL Schema

在 Payload 中,schema 由你的 collections 和 globals 控制。你只需运行生成命令,整个 schema 就会自动创建完成。

Schema 生成脚本

@payloadcms/graphql 安装为开发依赖:

pnpm add @payloadcms/graphql -D

运行以下命令生成 schema:

pnpm payload-graphql generate:schema

自定义字段 Schema

对于 arrayblockgroup 和命名 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。