You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Apollo GraphQL项目部署流水线中提取Schema?

从Apollo GraphQL项目本地提取Schema(无需部署)

你可以通过以下两种方式在本地/CI流水线中直接从代码生成Schema,无需部署应用到Lambda:

方法1:使用Apollo CLI提取

  1. 全局或项目内安装Apollo CLI:
    npm install -g apollo-cli
    # 或项目内安装:npm install apollo-cli --save-dev
    
  2. 确保你的项目代码中导出了Schema对象(比如在src/schema.ts或类似文件中),示例:
    import { makeExecutableSchema } from '@graphql-tools/schema';
    import typeDefs from './typeDefs';
    import resolvers from './resolvers';
    
    export const schema = makeExecutableSchema({ typeDefs, resolvers });
    
  3. 运行提取命令,指定Schema导出文件的路径:
    apollo schema:extract --endpoint=./src/schema.ts --output schema.graphql
    
    该命令会读取本地导出的Schema对象,生成SDL格式的schema.graphql文件。

方法2:自定义Node脚本生成(更灵活)

如果不想依赖Apollo CLI,可自行编写简单脚本生成Schema:

  1. 创建generate-schema.js文件:
    const { printSchema } = require('graphql');
    // 根据项目结构调整导入路径
    const { schema } = require('./src/schema');
    
    // 生成SDL格式的Schema文本
    const schemaSDL = printSchema(schema);
    // 写入本地文件
    require('fs').writeFileSync('./schema.graphql', schemaSDL, 'utf8');
    
    若使用TypeScript,可直接用ts-node运行:
    ts-node generate-schema.ts
    
  2. 在CI流水线中执行该脚本即可生成Schema文件。

集成到部署流水线

以GitHub Actions为例,添加以下步骤到工作流文件:

jobs:
  update-schema-docs:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Install dependencies
        run: npm install
      - name: Generate Schema
        run: node generate-schema.js # 或使用Apollo CLI命令
      - name: Upload to S3
        run: aws s3 cp schema.graphql s3://your-bucket-name/docs/schema.graphql
        env:
          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

这样每次主分支有提交时,流水线会自动生成Schema并更新S3中的文档。

注意事项

  • 确保Schema对象在代码中可导出,Apollo Server v4+中可通过server.schema获取(若已创建ApolloServer实例)。
  • 若使用代码优先的Schema定义方式(如@nestjs/graphql或Prisma),需确保能正确获取最终的Schema对象。

内容的提问来源于stack exchange,提问作者Marcus Lagerstedt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 16:49:59