Existe-t-il un moyen de modifier les requêtes GraphQL dans un composant de page selon que le site s'exécute en mode développement ou production?
Vous ne pouvez pas manipuler directement le texte de la requête, mais vous pouvez transmettre un contexte différent selon que vous êtes en mode développement ou en mode production.
Si cela fait référence au problème décrit dans https://github.com/gatsbyjs/gatsby/issues/10844#issuecomment -471349943
créer une liste de blog par programme, afin que vous puissiez passer context
à la requête
createPage({
path: "/blog",
template: <some_template>,
context: {
draftBlacklist: process.env.NODE_ENV === `production` ? [true] : []
}
})
puis en question:
query BlogListing($draftBlacklist: [String!]!) {
allMarkdownRemark(filter: {frontmatter: {draft: {nin: $draftBlacklist}}}) {
edges {
node {
frontmatter {
title
draft
}
}
}
}
Ce qui devrait afficher tous les nœuds en développement et filtrer tous les nœuds avec draft
défini sur true
en production. Il peut y avoir un problème de mise en cache (si vous exécutez la compilation après le développement, nous ne réexécuterons pas la requête atm). Mais si vous utilisez netlify
(ou d'autres types de CI / CD) pour les versions de production, cela devrait fonctionner
Commentaire le plus utile
Vous ne pouvez pas manipuler directement le texte de la requête, mais vous pouvez transmettre un contexte différent selon que vous êtes en mode développement ou en mode production.
Si cela fait référence au problème décrit dans https://github.com/gatsbyjs/gatsby/issues/10844#issuecomment -471349943
créer une liste de blog par programme, afin que vous puissiez passer
context
à la requêtepuis en question:
Ce qui devrait afficher tous les nœuds en développement et filtrer tous les nœuds avec
draft
défini surtrue
en production. Il peut y avoir un problème de mise en cache (si vous exécutez la compilation après le développement, nous ne réexécuterons pas la requête atm). Mais si vous utiliseznetlify
(ou d'autres types de CI / CD) pour les versions de production, cela devrait fonctionner