Echolot
Ligne de commande et CI

echolot graphql diff

Comparez deux schémas GraphQL et faites échouer un build en cas de changements incompatibles.

echolot graphql diff liste ce qui a changé d’un schéma GraphQL à un autre et note chaque changement, pour qu’un build puisse s’arrêter avant qu’un changement ne casse les clients d’une API.

echolot graphql diff <old> <new> [--fail-on <level>] [--json]

<old> et <new> sont le schéma avant et après : des fichiers SDL (.graphql) ou des résultats d’introspection (JSON), dans n’importe quelle combinaison.

Comparer deux schémas

git show main:specs/shop.graphql > before.graphql
echolot graphql diff before.graphql Alpenglow.echolot/specs/shop.graphql
Breaking (1)
  The field Product.weightGrams was removed
Dangerous (1)
  The argument inStock was added to Query.search
Safe (1)
  The field Product.colors was added
NoteSignification
BreakingDes requêtes qui fonctionnaient avant peuvent échouer maintenant : un type, un champ, un champ d’entrée, un argument, une valeur d’énumération ou une directive supprimé ; un argument ou un champ d’entrée obligatoire ajouté ; le type d’un champ modifié (autrement que pour rendre une sortie non nulle) ; un membre d’union ou une interface retiré.
DangerousLes requêtes continuent de fonctionner, mais peuvent se comporter différemment : un argument facultatif ajouté, une valeur par défaut modifiée, une valeur d’énumération ou un membre d’union ajouté, une nouvelle interface, quelque chose de déprécié.
SafeRien qu’une requête existante puisse remarquer : un type, un champ, un champ d’entrée facultatif ou une directive ajouté, une description modifiée, une dépréciation levée.

--json affiche les changements sous forme de tableau JSON, chacun avec sa severity, son path et son message :

[
  {
    "message" : "The field Product.weightGrams was removed",
    "path" : "Product.weightGrams",
    "severity" : "breaking"
  },
  {
    "message" : "The argument inStock was added to Query.search",
    "path" : "Query.search(inStock)",
    "severity" : "dangerous"
  }
]

Options

OptionSignification
--fail-on <level>breaking (par défaut) se termine avec le code 1 sur les changements incompatibles ; dangerous sur les changements incompatibles et dangereux ; none jamais.
--jsonAfficher les changements en JSON.

Codes de sortie

CodeQuand
0Aucun changement au niveau de --fail-on ou au-dessus.
1Des changements au niveau de --fail-on ou au-dessus, ou un schéma qui n’a pas pu être lu.

Pour récupérer un schéma depuis un serveur en cours d’exécution, envoyez la requête d’introspection avec la requête GraphQL de l’app, ou voir requêtes GraphQL.

Sur cette page