【问题标题】:Syncing contentful changes to localhost gatsby build without re-running `gatsby-develop`在不重新运行“gatsby-develop”的情况下将内容更改同步到 localhost gatsby build
【发布时间】:2020-08-04 14:00:12
【问题描述】:
我在玩gatsby contentful starter。我已经设置好所有内容,以便我可以进行内容更改,并且 webhook 将这些内容发布到远程 Netlify 站点,我所要做的就是刷新 netlify 站点以查看最新的 CMS 更改。但是,在本地,为了查看 CMS 更改,我必须从 yarn develop 转到 ctrl-c,然后重新启动打包程序。有没有办法保持同步,所以我所要做的就是刷新页面? (甚至更好,HMR)。
【问题讨论】:
标签:
javascript
gatsby
contentful
【解决方案1】:
您正在寻找环境变量。 Gatsby 保留了其中的一些来做你需要的事情(以及更多)。
Gatsby 公开了一个/__refresh webhook,它能够接收 POST 请求以刷新源内容。只要远程数据发生变化,就可以触发这个暴露的 webhook,这意味着您可以在不重新启动开发服务器的情况下更新数据。
首先,您需要通过在gatsby-config.js(模块导出上方)中添加此 sn-p 来允许 Gatsby 使用环境变量:
require("dotenv").config({
path: `.env.${process.env.NODE_ENV}`,
})
然后,您需要在package.json 中添加develop 命令,将我之前提到的保留环境变量(ENABLE_GATSBY_REFRESH_ENDPOINT)设置为true,
"scripts": {
"develop": "ENABLE_GATSBY_REFRESH_ENDPOINT=true gatsby develop",
}
现在,您可以使用 /__refresh 同步您的更改。根据他们的文档:
您可以在本地触发此端点,例如,在基于 Unix 的
使用 curl -X POST 的操作系统(如 Ubuntu 和 MacOS)
http://localhost:8000/__refresh.
您可以在their docs查看更多信息。
【讨论】:
-
在 Ferran 上的位置。 ? 对于本地开发,您必须公开 localhost:8000。像 ngrok 这样的工具可以帮助解决这个问题。 :) ngrok.com