GraphQL-Schema in AST umwandeln — Numio
Parst GraphQL-SDL, baut ein Schema und gibt es mit @graphql-codegen/schema-ast als ein einziges normalisiertes Schema wieder aus. Typerweiterungen werden in ihre Basistypen zusammengeführt und Beschreibungen als Block-Strings ausgegeben.
Über mehrere Dateien verteilte extend type-Blöcke für Review oder Tools zu einer schema.graphql zusammenführen.
Wann sie hilft
- Über mehrere Dateien verteilte extend type-Blöcke für Review oder Tools zu einer schema.graphql zusammenführen.
- Handgeschriebene SDL in das kanonische Ausgabeformat normalisieren, bevor du zwei Schemaversionen vergleichst.
Anwendung
- Füge ein oder mehrere SDL-Fragmente, einschließlich etwaiger extend type-Blöcke, in den Editor GraphQL Schema ein.
- Prüfe das ausgegebene Ergebnis: Erweiterungsfelder werden dem ursprünglichen Typ hinzugefügt, und Beschreibungen werden zu """-Blöcken.
- Kopiere die Ausgabe und speichere sie als .graphql-Datei.
GraphQL-Schema
extend type Query {
me: User
}
type Query {
ping: String
}
type User {
id: ID!
"Display name"
name: String @deprecated(reason: "Use fullName")
}Ausgegebenes Schema (SDL)
type Query {
me: User
ping: String
}
type User {
id: ID!
"""
Display name
"""
name: String @deprecated(reason: "Use fullName")
}Details und Einschränkungen
Die Feldreihenfolge kann sich ändern: In diesem Beispiel wurden die Felder aus einem extend type-Block vor den eigenen Feldern des Basistyps ausgegeben.
Felddirektiven wie @deprecated(reason: ...) bleiben in der ausgegebenen SDL erhalten.
Das Schema wird in einem Web Worker im Browser gebaut und ausgegeben und anschließend mit dem GraphQL-Parser von Prettier formatiert.
FAQ
Gibt es einen JSON-AST aus?
Nein. Trotz des Namens ist das Ergebnis ausgegebene GraphQL-SDL, kein JSON-DocumentNode. Nutze die Seite für Introspection-JSON, wenn du JSON brauchst.
Was passiert mit #-Kommentaren?
Kommentare gehören nicht zum Schema und gehen bei der Ausgabe verloren. Verwende "description"-Strings, um Dokumentation zu erhalten.
Kann es extend type in den Basistyp zusammenführen?
Ja. Erweiterungen werden auf den Basistyp angewendet, sodass die Ausgabe einen einzigen type Query mit allen Feldern enthält.