Gatsby: Diferentes consultas GraphQL en desarrollo y producción.

Creado en 10 mar. 2019  ·  1Comentario  ·  Fuente: gatsbyjs/gatsby

¿Hay alguna forma de modificar las consultas GraphQL en un componente de la página dependiendo de si el sitio se está ejecutando en modo de desarrollo o de producción?

question or discussion

Comentario más útil

No puede manipular directamente el texto de la consulta, pero puede pasar un contexto diferente dependiendo de si está en modo dev o prod.

Si esto se refiere al problema descrito en https://github.com/gatsbyjs/gatsby/issues/10844#issuecomment -471349943

crear una lista de blogs mediante programación, para que pueda pasar context a la consulta

createPage({
  path: "/blog",
  template: <some_template>,
  context: {
    draftBlacklist: process.env.NODE_ENV === `production` ? [true] : []
  }
})

y luego en consulta:

query BlogListing($draftBlacklist: [String!]!) {
  allMarkdownRemark(filter: {frontmatter: {draft: {nin: $draftBlacklist}}}) {
    edges {
      node {
        frontmatter {
          title
          draft
        }
      }
    }
  }

Lo que debería mostrar todos los nodos en desarrollo y filtrar todos los nodos con draft establecido en true en producción. Puede haber algún problema con el almacenamiento en caché (si ejecuta compilación tras desarrollo, no volveremos a ejecutar el cajero automático de consultas). Pero si usa netlify (u otros tipos de CI / CD) para compilaciones de producción, esto debería funcionar

>Todos los comentarios

No puede manipular directamente el texto de la consulta, pero puede pasar un contexto diferente dependiendo de si está en modo dev o prod.

Si esto se refiere al problema descrito en https://github.com/gatsbyjs/gatsby/issues/10844#issuecomment -471349943

crear una lista de blogs mediante programación, para que pueda pasar context a la consulta

createPage({
  path: "/blog",
  template: <some_template>,
  context: {
    draftBlacklist: process.env.NODE_ENV === `production` ? [true] : []
  }
})

y luego en consulta:

query BlogListing($draftBlacklist: [String!]!) {
  allMarkdownRemark(filter: {frontmatter: {draft: {nin: $draftBlacklist}}}) {
    edges {
      node {
        frontmatter {
          title
          draft
        }
      }
    }
  }

Lo que debería mostrar todos los nodos en desarrollo y filtrar todos los nodos con draft establecido en true en producción. Puede haber algún problema con el almacenamiento en caché (si ejecuta compilación tras desarrollo, no volveremos a ejecutar el cajero automático de consultas). Pero si usa netlify (u otros tipos de CI / CD) para compilaciones de producción, esto debería funcionar

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

andykais picture andykais  ·  3Comentarios

totsteps picture totsteps  ·  3Comentarios

ferMartz picture ferMartz  ·  3Comentarios

magicly picture magicly  ·  3Comentarios

theduke picture theduke  ·  3Comentarios