Задать вопрос
@Famence
Full-stack web-developer / freelancer

Есть ли Node.js API для генерации файла с GraphQL схемой на лету?

Пишу приложение с бэкендом на Node.js и API на GraphQL.
Использую Nodemon для перезапуска сервера при изменениях в коде.
Описываю GraphQL схему стандартным программным способом вида:
const UserQuery = {
  type: GraphQLUser,
  args: {
    id: { type: GraphQLString }
  },
  resolve: async (root, { id }, context) => {
    if (id) return await User.findById(fromGlobalId(id).id)
    return context.request.user
  }
}


В данный момент для генерации текстового файла со схемой (schema.graphql) юзаю плагин для WebStorm, который посылает Introspection query на graphql-эндпоинт и на основе ответа генерирует файл schema.graphql.
После каждого изменения в js файлах схемы мне приходится вызывать это действие плагина вручную для генерации актуальной схемы.

Вопрос:
Есть ли какой-либо npm-пакет с API или метод в самом пакете graphql, выполняющий такие же действия при его вызове? То есть генерирующий текстовый файл схемы.
Было бы удобно выполнять это действие во время запуска сервера, что вкупе с Nodemon избавило бы от ручных кликов по плагину в IDE, так как при внесении изменений в js-файлы схемы перезапускался бы сервер и генерировалась актуальная схема.
  • Вопрос задан
  • 114 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
Robur
@Robur
Знаю больше чем это необходимо
можно генерить программно при старте если у вас есть схема в памяти:
https://blog.apollographql.com/three-ways-to-repre...
Смотрите секцию "Converting between all of the different types"
Можете сохранить и schema.graphql и schema.json.

Можно сделать ватчер в IDE чтобы он по изменению нужных файлов запускал скрипт который загрузит вашу схему и экспортирует её в файл.
И другие извращения на ваш вкус.

Другой вопрос - зачем вам вообще это надо, проще писать все в *.graphql файлы или в ts с тегом gql и импортировать их напрямую, и их же использовать для работы всяких тулз/плагинов и прочего.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
inoise
@inoise
Solution Architect, AWS Certified, Serverless
для этого обычно используют blue-green deployment. запускается новый инстанс проекта и потом на него переключается трафик. А вы пробуете решить эту задачу как типичный разработчик своими силами
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы