在不重新 运行 `gatsby-develop` 的情况下将内容更改同步到 localhost gatsby build

Syncing contentful changes to localhost gatsby build without re-running `gatsby-develop`

我正在玩 gatsby contentful starter。我已设置好所有内容,以便我可以在 contentful 中进行内容更改,webhook 将这些内容发布到远程 Netlify 站点,我所要做的就是刷新 netlify 站点以查看最新的 CMS 更改。但是,在本地,为了查看 CMS 的更改,我必须从 yarn develop ctrl-c,然后重新启动打包程序。有没有办法让它保持同步,这样我所要做的就是刷新页面? (或者更好,HMR)。

您正在寻找环境变量。 Gatsby 保留了其中的一堆来做你需要的(以及更多)。

Gatsby 公开了一个 /__refresh webhook,它能够接收 POST 请求以刷新源内容。只要远程数据发生变化,就会触发这个公开的 webhook,这意味着您可以在不重新启动开发服务器的情况下更新数据。

首先,您需要通过在 gatsby-config.js(模块导出上方)中添加此代码段来允许 Gatsby 使用环境变量:

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

然后,您需要通过添加 develop 命令,在 [=17] 中将我之前提到的保留环境变量 (ENABLE_GATSBY_REFRESH_ENDPOINT) 设置为 true =],

      "scripts": {
        "develop": "ENABLE_GATSBY_REFRESH_ENDPOINT=true gatsby develop",
      }

现在,您已使用 /__refresh 同步更改。根据他们的文档:

You can trigger this endpoint locally, for example, on Unix-based operating systems (like Ubuntu and MacOS) using curl -X POST http://localhost:8000/__refresh.

您可以在 their docs 中查看更多信息。