如何在节点和 Gatsby 页面之间共享 GraphQL 片段?

How to share GraphQL fragments between node and Gatsby pages?

在开发 Gatsby pages/views 时,有一个 graphql 模板文字可用。不确定它到底来自哪里。

当使用 Gatsby 节点 api (gatsby-node.js) 创建页面时,graphql 解析器被注入到 createPages

等函数中

我想知道如何在页面和节点部分之间共享 GraphQL 片段。理想情况下,我希望两者都使用模板文字 graphql 以便我的 IDE 可以理解它是 GraphQL 和连线语法突出显示。目前我的节点查询是传递给 graphql 函数的纯字符串,我没有为此自动完成。我最终也遇到了查询重复。

我尝试 add/import 官方 graphql 解析器,但没有取得很大成功,并且不确定是否应该那样做。

理想情况下,我想摆脱页​​面中可用的全局 graphql 模板文字,而无需任何导入,并有一个真正导入(或需要旧节点版本)的解决方案,以便它可以安全分享。

有什么想法吗?

对于 graphql 文字,请参阅此解释 https://www.gatsbyjs.org/tutorial/part-four/#wait--where-did-the-graphql-tag-come-from

在片段上,没有办法,因为这不是你通常想做的事情。当您创建页面时,您只是查询要传递给它需要查询数据的页面组件的 ID。例如。得到一个 markdown 页面,你将 ID 传递给 MarkdownRemark 节点。