我有一个与Gatsby有关的项目,它的"构建"部署到AWS S3桶中,使用静态网站托管。
我的盖茨比项目正在使用Gatsby -source- Sanity插件,这是从Sanity获取数据。输入输出数据集。
在我的非生产阶段,我想有一个预览和watchMode上,所以我不会构建和部署应用程序的每一个变化。
gatsby-config.js:
{
resolve: "gatsby-source-sanity",
options: {
projectId: process.env.GATSBY_SANITY_PROJECT_ID,
dataset:
process.env.GATSBY_STAGE === "production" ||
process.env.GATSBY_STAGE === "master" ||
process.env.GATSBY_STAGE === "preview"
? "production"
: "dev",
token: process.env.SANITY_TOKEN,
overlayDrafts:
process.env.GATSBY_STAGE !== "production" &&
process.env.GATSBY_STAGE !== "master",
watchMode:
process.env.GATSBY_STAGE !== "production" &&
process.env.GATSBY_STAGE !== "master",
},
},
当我在本地主机上运行项目并在Sanity Documents中进行更改时,我立即获得更改,但我没有在部署版本上获得更改。
如何在S3桶上实现watchMode ?
您不能在生产环境中使用watchMode
,因为站点已经构建完成。
在gatsby develop
环境中,Gatsby公开了一个web套接字,该套接字可以侦听来自源的数据变化,从而在开发模式下重新触发站点。然而,在gatsby build,
中,你不能,因为静态页面已经构建。要触发数据源的新刷新,您需要触发一个新的部署。
这可以使用webhooks来完成,它将侦听数据更改以触发bucket中的新部署。
相关文章:
- https://medium.com/technogise/auto-build-gatsby-application-using-custom-webhook-on-wordpress-c3c5f70ca005
- https://support.gatsbyjs.com/hc/en-us/articles/360052324394-Build-and-Preview-Webhooks