Gatsby: Différentes requêtes GraphQL en développement et en production

Créé le 10 mars 2019  ·  1Commentaire  ·  Source: gatsbyjs/gatsby

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?

question or discussion

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ê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

>Tous les commentaires

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

Cette page vous a été utile?
0 / 5 - 0 notes