Echolot
Командная строка и CI

echolot graphql diff

Сравните две схемы GraphQL и останавливайте сборку при несовместимых изменениях.

echolot graphql diff перечисляет, что изменилось между двумя схемами GraphQL, и оценивает каждое изменение, чтобы сборка могла остановиться раньше, чем изменение сломает клиентов API.

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

<old> и <new> — схема до и после: файлы SDL (.graphql) или результаты интроспекции (JSON), в любом сочетании.

Сравнение двух схем

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
ОценкаЧто значит
BreakingЗапросы, которые работали раньше, теперь могут падать: удалён тип, поле, поле ввода, аргумент, значение enum или директива; добавлен обязательный аргумент или поле ввода; изменён тип поля (кроме превращения выходного значения в non-null); убран член union или интерфейс.
DangerousЗапросы продолжают работать, но могут вести себя иначе: добавлен необязательный аргумент, изменено значение по умолчанию, добавлено значение enum или член union, новый интерфейс, что-то помечено устаревшим.
SafeНичего, что мог бы заметить существующий запрос: добавлен тип, поле, необязательное поле ввода или директива, изменено описание, снято устаревание.

--json печатает изменения как массив JSON, у каждого — severity, path и 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"
  }
]

Параметры

ПараметрЗначение
--fail-on <level>breaking (по умолчанию) завершается с кодом 1 при несовместимых изменениях; dangerous — при несовместимых и опасных; none — никогда.
--jsonНапечатать изменения в формате JSON.

Коды выхода

КодКогда
0Нет изменений на уровне --fail-on и выше.
1Есть изменения на уровне --fail-on и выше либо схему не удалось прочитать.

Чтобы получить схему с работающего сервера, отправьте запрос интроспекции запросом GraphQL в приложении или см. запросы GraphQL.

На этой странице