サイトが開発モードで実行されているか本番モードで実行されているかに応じて、ページコンポーネントのGraphQLクエリを変更する方法はありますか?
クエリテキストを直接操作することはできませんが、devモードかprodモードかに応じて異なるコンテキストを渡すことができます。
これが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
}
}
}
}
これにより、開発中のすべてのノードが表示され、本番環境でdraft
がtrue
に設定されているすべてのノードが除外されます。 キャッシュの問題がある可能性があります(開発後にビルドを実行した場合、クエリatmは再実行されません)。 ただし、本番ビルドにnetlify
(または他の種類のCI / CD)を使用する場合、これは機能するはずです。
最も参考になるコメント
クエリテキストを直接操作することはできませんが、devモードかprodモードかに応じて異なるコンテキストを渡すことができます。
これがhttps://github.com/gatsbyjs/gatsby/issues/10844#issuecomment-471349943で説明されている問題を参照している場合
プログラムでブログリストを作成するので、
context
を渡してクエリを実行できますそしてクエリで:
これにより、開発中のすべてのノードが表示され、本番環境で
draft
がtrue
に設定されているすべてのノードが除外されます。 キャッシュの問題がある可能性があります(開発後にビルドを実行した場合、クエリatmは再実行されません)。 ただし、本番ビルドにnetlify
(または他の種類のCI / CD)を使用する場合、これは機能するはずです。