首页 > 解决方案 > 在strapi中启用预览选项

问题描述

如何在不使用 gatsby 云的情况下在strapi(backend)/gatsby(frontend) 中启用预览选项?

我使用了 gatsby cloud,它运行良好。但我希望自己实现这个功能,因为企业的 gatby 云很昂贵。

标签: gatsbystrapi

解决方案


依赖于您的问题的想法有些复杂,需要大量实现。

从字面上看,您需要使用 webhook 在您的环境中触发develop/build命令。这在 Strapi 中是可能的,3.x.x因为它显示在他们的官方文档中,但仍然是一个 beta 功能。

一些 CMS(如 DatoCMS 所做的那样)公开了一个选项来重新加载在每次内容更改中提供的数据,但是对于 Strapi,没有这样的选项,至少在Gatsby 关于 Strapi 的文档中没有很好地记录。

一切都由 Gatsby Cloud 处理(这就是昂贵的原因)但是,另一种可能适合您的方法或解决方法是使用 localhost:8000/___refresh (它仅适用于develop命令):

来自 Gatsby 关于环境变量的文档

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

您可以在本地触发此端点,例如,在基于 Unix 的操作系统(如 Ubuntu 和 MacOS)上,使用curl -X POST http://localhost:8000/__refresh

所以基本上,你需要将一个环境变量设置为 true,每个对 localhost:8000/___refresh 的请求都会再次加载内容。要实现它,首先,您需要将开发命令更改为(在您的package.json):

"develop": "ENABLE_GATSBY_REFRESH_ENDPOINT=true gatsby develop",

注意:从现在开始你需要运行npm run develop/yarn develop

然后,每个请求localhost:8000/___refresh都会重新加载您的数据。您可以简单地使用onClick按钮功能或其他方式来完成此操作。


推荐阅读