验证客户端操作
确认您的模式支持所有客户端操作
您可以通过以下方式确认所有GraphQL操作定义在您的客户端应用中都是有效的,针对您的图中的类型,字段和参数。已发布的模式。为了做到这一点,您可以使用apollo client:check
命令,此命令来自Apollo CLI:
$ apollo client:check✔ Loading Apollo Project✔ Checking client compatibility with serviceGetTeamGrid: src/components/TeamGrid.jsx:4FAILURE Field "league" must not have a selection since type "SportsLeague" has no subfields.4 total operations validated1 failure
您可以从客户端应用程序的根目录运行此命令。它会递归地扫描您的项目以查找以下内容
- GraphQL操作用
gql
标签包装 - 客户端模式扩展用
gql
标签包装
通过将您的已注册的图的架构与客户端架构扩展结合,apollo client:check
命令可以确认每个定义的操作的形状是否与合并架构的形状相符。
请确保您的项目为Apollo CLI提供图API密钥。这不仅使用Studio验证CLI,还指定了您检查架构的哪个图。
对照特定变体进行检查
在开发过程中,您可能正在执行与本地运行的、架构与生产服务器架构略有不同的服务器上的 GraphQL 操作。由于架构可能不同,因此在将客户端更改推送到该环境之前,始终要检查特定环境的当前架构非常重要。
如果您使用不同的图变体来表示服务器上的每个环境(推荐),您可以像这样对照特定变体的架构检查操作:
$ apollo client:check --variant=production
与持续集成一起使用
您可以将client:check
整合到持续交付管道中,以确保在上线前新操作和修改过的操作是有效的。
下面是一个包含此命令的Circle CI配置示例
config.yml
version: 2jobs:# ...other jobs...# Define a separate job for each environment you validate against.check_against_staging:docker:- image: circleci/node:12steps:- checkout- run: npm install# CircleCI needs global installs to be sudo- run: sudo npm install --global apollo# This command authenticates using the `APOLLO_KEY` environment variable.# Don't forget to provide your API key in it.- run: npx apollo client:check --variant=staging