我们正在使用内容丰富的 gatsby 开发一个大型 CMS。由于立法内容的原因,这个内容丰富的安装有 2 个空间和用于开发新功能的多种环境。目前,我们的流程是我们使用 contentful 的迁移工具来为 contentful 中的新内容模型和/或内容模型更改创建迁移,并将它们存储在源代码控制中。合并后,我们的 CI 工作流程将这些内容模型更改迁移到我们两个空间的主环境。
我们遇到的一个问题是,由于 contentful 的管理 API 的一个怪癖,其中没有任何内容的任何内容模型都注册为不存在,我们需要为我们的一些内容模型更改创建种子内容。这会产生以下问题:
- 需要通过 id 引用现有内容的种子内容将在空格之间中断,因为 id 会有所不同
- 如果我们花一些时间开发一个功能,我们的环境将落后于主环境,更新我们的临时开发环境可能会很耗时且很尴尬,具体取决于主环境的更改程度
- 我们最终会在我们的空间中加载大量虚拟内容,使我们的内容空间变得凌乱
我们正在尝试几种解决方案,但首选的解决方案是自己简单地处理来自 graphql 验证的错误。在对 gql 验证进行了一些实验后,删除了一些内部规则,对 contentful 的调用实际上并没有破坏应用程序。所有重大错误都来自验证步骤。理想的做法是“关闭”验证规则NoUndefinedVariables
,这是唯一给我们带来问题的规则。关闭我的意思是只显示一个关于中断错误的警告。然后,我们将自己处理应用程序中的未定义或空值。
我看不到通过 gatsby 的开发人员界面(gatsby-node、gatsby-config 等)处理 gql 验证的任何方法。处理这个问题的最佳方法是什么?