Gatsby: Consulta GraphQL diferente no desenvolvimento e produção

Criado em 10 mar. 2019  ·  1Comentário  ·  Fonte: gatsbyjs/gatsby

Existe uma maneira de modificar as consultas GraphQL em um componente de página, dependendo se o site está sendo executado em modo de desenvolvimento ou produção?

question or discussion

Comentários muito úteis

Você não pode manipular diretamente o texto da consulta, mas pode passar contextos diferentes, dependendo se estiver no modo de desenvolvimento ou produção.

Se isso se referir ao problema descrito em https://github.com/gatsbyjs/gatsby/issues/10844#issuecomment -471349943

crie uma lista de blogs programaticamente, para que você possa passar context para consultar

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

e depois na consulta:

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

Que deve mostrar todos os nós no dev e filtrar todos os nós com draft definido como true em produção. Pode haver algum problema de cache (se você executar build após o desenvolvimento, não executaremos novamente o atm da consulta). Mas se você usar netlify (ou outros tipos de CI / CD) para compilações de produção, isso deve funcionar

>Todos os comentários

Você não pode manipular diretamente o texto da consulta, mas pode passar contextos diferentes, dependendo se estiver no modo de desenvolvimento ou produção.

Se isso se referir ao problema descrito em https://github.com/gatsbyjs/gatsby/issues/10844#issuecomment -471349943

crie uma lista de blogs programaticamente, para que você possa passar context para consultar

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

e depois na consulta:

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

Que deve mostrar todos os nós no dev e filtrar todos os nós com draft definido como true em produção. Pode haver algum problema de cache (se você executar build após o desenvolvimento, não executaremos novamente o atm da consulta). Mas se você usar netlify (ou outros tipos de CI / CD) para compilações de produção, isso deve funcionar

Esta página foi útil?
0 / 5 - 0 avaliações