GraphQL에서 스키마 AST로 변환 — Numio
@graphql-codegen/schema-ast로 GraphQL SDL을 파싱해 스키마를 만든 뒤, 정규화된 하나의 스키마로 다시 출력합니다. 타입 확장은 기본 타입에 병합되고 description은 블록 문자열로 출력됩니다.
여러 파일에 흩어진 extend type 블록을 하나의 schema.graphql로 합쳐 리뷰하거나 도구에 사용합니다.
이럴 때 사용하세요
- 여러 파일에 흩어진 extend type 블록을 하나의 schema.graphql로 합쳐 리뷰하거나 도구에 사용합니다.
- 두 스키마 버전을 diff하기 전에 직접 작성한 SDL을 표준 출력 형식으로 정규화합니다.
사용 방법
- extend type 블록을 포함한 하나 이상의 SDL 조각을 GraphQL Schema 편집기에 붙여 넣습니다.
- 출력 결과를 확인합니다. 확장 필드는 원래 타입에 추가되고 description은 """ 블록이 됩니다.
- 출력을 복사해 .graphql 파일로 저장합니다.
GraphQL 스키마
extend type Query {
me: User
}
type Query {
ping: String
}
type User {
id: ID!
"Display name"
name: String @deprecated(reason: "Use fullName")
}출력된 스키마(SDL)
type Query {
me: User
ping: String
}
type User {
id: ID!
"""
Display name
"""
name: String @deprecated(reason: "Use fullName")
}세부 정보 및 제한 사항
필드 순서가 바뀔 수 있습니다. 이 예시에서는 extend type 블록의 필드가 기본 타입 자체 필드보다 먼저 출력되었습니다.
@deprecated(reason: ...) 같은 필드 디렉티브는 출력된 SDL에 유지됩니다.
스키마는 브라우저 Web Worker에서 생성·출력된 다음 Prettier의 GraphQL 파서로 포맷됩니다.
FAQ
JSON AST를 출력하나요?
아니요. 이름과 달리 결과는 JSON DocumentNode가 아니라 출력된 GraphQL SDL입니다. JSON이 필요하면 introspection JSON 페이지를 사용하세요.
# 주석은 어떻게 되나요?
주석은 스키마의 일부가 아니므로 스키마를 출력할 때 제거됩니다. 문서를 유지하려면 "description" 문자열을 사용하세요.
extend type을 기본 타입에 병합할 수 있나요?
네. 확장이 기본 타입에 적용되므로 출력에는 모든 필드를 가진 type Query 하나만 있습니다.