有没有一种方法可以根据网站是以开发模式还是生产模式运行来修改页面组件中的GraphQL查询?
您不能直接操纵查询文本,但是可以根据开发环境或生产模式来传递不同的上下文。
如果这是指https://github.com/gatsbyjs/gatsby/issues/10844#issuecomment -471349943中描述的问题
以编程方式创建博客列表,因此您可以传递context
进行查询
createPage({
path: "/blog",
template: <some_template>,
context: {
draftBlacklist: process.env.NODE_ENV === `production` ? [true] : []
}
})
然后在查询中:
query BlogListing($draftBlacklist: [String!]!) {
allMarkdownRemark(filter: {frontmatter: {draft: {nin: $draftBlacklist}}}) {
edges {
node {
frontmatter {
title
draft
}
}
}
}
它应该显示dev中的所有节点,并过滤掉生产中draft
设置为true
所有节点。 可能存在一些缓存问题(如果在开发后运行构建,我们将不会重新运行查询atm)。 但是,如果您使用netlify
(或其他种类的CI / CD)进行生产构建,则应该可以使用
最有用的评论
您不能直接操纵查询文本,但是可以根据开发环境或生产模式来传递不同的上下文。
如果这是指https://github.com/gatsbyjs/gatsby/issues/10844#issuecomment -471349943中描述的问题
以编程方式创建博客列表,因此您可以传递
context
进行查询然后在查询中:
它应该显示dev中的所有节点,并过滤掉生产中
draft
设置为true
所有节点。 可能存在一些缓存问题(如果在开发后运行构建,我们将不会重新运行查询atm)。 但是,如果您使用netlify
(或其他种类的CI / CD)进行生产构建,则应该可以使用