Gatsby: Kueri GraphQL yang berbeda dalam pengembangan dan produksi

Dibuat pada 10 Mar 2019  ·  1Komentar  ·  Sumber: gatsbyjs/gatsby

Apakah ada cara untuk mengubah kueri GraphQL dalam komponen halaman bergantung pada apakah situs tersebut berjalan dalam mode pengembangan atau produksi?

question or discussion

Komentar yang paling membantu

Anda tidak dapat secara langsung memanipulasi teks kueri, tetapi Anda dapat meneruskan konteks yang berbeda tergantung apakah Anda dalam mode dev atau mode prod.

Jika ini mengacu pada masalah yang dijelaskan di https://github.com/gatsbyjs/gatsby/issues/10844#issuecomment -471349943

membuat daftar blog secara terprogram, sehingga Anda dapat meneruskan context ke kueri

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

dan kemudian di kueri:

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

Yang seharusnya menampilkan semua node dalam dev, dan memfilter semua node dengan draft disetel ke true dalam produksi. Mungkin ada beberapa masalah caching (jika Anda menjalankan build demi develop, kami tidak akan menjalankan kembali kueri atm). Tetapi jika Anda menggunakan netlify (atau jenis CI / CD lain) untuk build produksi, ini akan berfungsi

>Semua komentar

Anda tidak dapat secara langsung memanipulasi teks kueri, tetapi Anda dapat meneruskan konteks yang berbeda tergantung apakah Anda dalam mode dev atau mode prod.

Jika ini mengacu pada masalah yang dijelaskan di https://github.com/gatsbyjs/gatsby/issues/10844#issuecomment -471349943

membuat daftar blog secara terprogram, sehingga Anda dapat meneruskan context ke kueri

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

dan kemudian di kueri:

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

Yang seharusnya menampilkan semua node dalam dev, dan memfilter semua node dengan draft disetel ke true dalam produksi. Mungkin ada beberapa masalah caching (jika Anda menjalankan build demi develop, kami tidak akan menjalankan kembali kueri atm). Tetapi jika Anda menggunakan netlify (atau jenis CI / CD lain) untuk build produksi, ini akan berfungsi

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

theduke picture theduke  ·  3Komentar

magicly picture magicly  ·  3Komentar

KyleAMathews picture KyleAMathews  ·  3Komentar

jimfilippou picture jimfilippou  ·  3Komentar

rossPatton picture rossPatton  ·  3Komentar