Гэтсби: повторное выполнение запросов к страницам вручную - PullRequest
1 голос
/ 17 апреля 2020

Знаете ли вы, возможно ли повторное выполнение запросов страницы Гэтсби (обычные запросы) вручную?
Примечание. Это должно происходить в режиме разработки во время выполнения gatsby develop.

Справочная информация: I ' я пытаюсь настроить черновую среду с Gatsby и Headless CMS (Craft CMS в моем случае). Я хочу gatsby develop бежать, скажем, на героку. CMS запрашивает страницу Gatsby, передавая указанный * черновик-токен c в качестве параметра URL, а затем запросы страницы должны быть повторно выполнены, используя токен для повторного получения чернового содержимого из CMS, а не опубликованного содержимого .

Я подключаюсь к запросу токена через промежуточное ПО, определенное в gatsby-config.js. Все это основано на https://gist.github.com/monachilada/af7e92a86e0d27ba47a8597ac4e4b105

Я пытался

createSchemaCustomization({ refresh: true }).then(() => {
  sourceNodes()
})

, но это полностью воссоздает все страницы. Я действительно хочу, чтобы запросы страниц были извлечены / выполнены.

Ответы [ 2 ]

0 голосов
/ 17 апреля 2020

Требуется перестройка для всех, например, когда у вас есть страницы индексации.

Похоже, вам нужны некоторые логики c для условного вызова createPage (со всеми перезагруженными данными) или даже для условного извлечения данных для выбранных только страницы.

Если количество (страниц) относительно невелико, я бы собрал все данные, чтобы узнать время обновления страницы. Затем в l oop условно (время в течение нескольких минут - не нужно передавать параметр) вызовите createPage.

Если разработчик не вызывает 'createPage' на /__refresh ... погрузитесь глубже в код Гэтсби и найдите логи c и способ изменить узлы редукса touched.

... или найдите другие методы оптимизации, которые можно использовать для этого сценария (запрашиваемые данные кэшируются в файлы json?) .

0 голосов
/ 17 апреля 2020

Вероятно, вы ищете это . По сути, вам нужно установить переменную окружения (ENABLE_GATSBY_REFRESH_ENDPOINT), которая открывает и предоставляет /__refresh веб-крючок, который может получать POST запросов на обновление sh исходного содержимого. Этот открытый веб-крючок может запускаться при каждом изменении удаленных данных, что означает, что вы можете обновить свои данные, не перезапуская сервер разработки.

Вы также можете запустить его вручную, используя: curl -X POST http://localhost:8000/__refresh

Если вам нужно подробное объяснение того, как установить .env переменные в Гэтсби, просто скажите мне, и я предоставлю подробное объяснение. Но вам просто нужно создать файл .env с вашими переменными (ENABLE_GATSBY_REFRESH_ENDPOINT=true) и поместить этот фрагмент в ваш gatsby-config.js:

require("dotenv").config({
  path: `.env.${activeEnv}`,
})

Конечно, он будет работать только в среде разработки, но в этом случае он соответствует вашим требованиям.

...