Gatsby: ๊ฐœ๋ฐœ ๋ฐ ํ”„๋กœ๋•์…˜์—์„œ ๋‹ค๋ฅธ GraphQL ์ฟผ๋ฆฌ

์— ๋งŒ๋“  2019๋…„ 03์›” 10์ผ  ยท  1๋…ผํ‰  ยท  ์ถœ์ฒ˜: gatsbyjs/gatsby

์‚ฌ์ดํŠธ๊ฐ€ ๊ฐœ๋ฐœ ๋ชจ๋“œ์—์„œ ์‹คํ–‰ ์ค‘์ธ์ง€ ํ”„๋กœ๋•์…˜ ๋ชจ๋“œ์—์„œ ์‹คํ–‰ ์ค‘์ธ์ง€์— ๋”ฐ๋ผ ํŽ˜์ด์ง€ ๊ตฌ์„ฑ ์š”์†Œ์—์„œ GraphQL ์ฟผ๋ฆฌ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

question or discussion

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ฟผ๋ฆฌ ํ…์ŠคํŠธ๋ฅผ ์ง์ ‘ ์กฐ์ž‘ ํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒ dev ๋˜๋Š” prod ๋ชจ๋“œ์— ์žˆ๋Š”์ง€์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์ปจํ…์ŠคํŠธ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

https://github.com/gatsbyjs/gatsby/issues/10844#issuecomment -471349943์— ์„ค๋ช… ๋œ ๋ฌธ์ œ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๊ฒฝ์šฐ

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ๋ธ”๋กœ๊ทธ ๋ชฉ๋ก์„ ์ƒ์„ฑํ•˜๋ฏ€๋กœ context ๋ฅผ ์ „๋‹ฌํ•˜์—ฌ ์ฟผ๋ฆฌ ํ•  ์ˆ˜ โ€‹โ€‹์žˆ์Šต๋‹ˆ๋‹ค.

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

๊ทธ๋ฆฌ๊ณ  ์ฟผ๋ฆฌ์—์„œ :

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

dev์˜ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ํ‘œ์‹œํ•˜๊ณ  ํ”„๋กœ๋•์…˜์—์„œ draft ์ด true ๋กœ ์„ค์ •๋œ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ํ•„ํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค. ์บ์‹ฑ ๋ฌธ์ œ๊ฐ€์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (๊ฐœ๋ฐœ ํ›„ ๋นŒ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ฟผ๋ฆฌ atm์„ ๋‹ค์‹œ ์‹คํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค). ๊ทธ๋Ÿฌ๋‚˜ ํ”„๋กœ๋•์…˜ ๋นŒ๋“œ์— netlify (๋˜๋Š” ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ CI / CD)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

>๋ชจ๋“  ๋Œ“๊ธ€

์ฟผ๋ฆฌ ํ…์ŠคํŠธ๋ฅผ ์ง์ ‘ ์กฐ์ž‘ ํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒ dev ๋˜๋Š” prod ๋ชจ๋“œ์— ์žˆ๋Š”์ง€์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์ปจํ…์ŠคํŠธ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

https://github.com/gatsbyjs/gatsby/issues/10844#issuecomment -471349943์— ์„ค๋ช… ๋œ ๋ฌธ์ œ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๊ฒฝ์šฐ

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ๋ธ”๋กœ๊ทธ ๋ชฉ๋ก์„ ์ƒ์„ฑํ•˜๋ฏ€๋กœ context ๋ฅผ ์ „๋‹ฌํ•˜์—ฌ ์ฟผ๋ฆฌ ํ•  ์ˆ˜ โ€‹โ€‹์žˆ์Šต๋‹ˆ๋‹ค.

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

๊ทธ๋ฆฌ๊ณ  ์ฟผ๋ฆฌ์—์„œ :

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

dev์˜ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ํ‘œ์‹œํ•˜๊ณ  ํ”„๋กœ๋•์…˜์—์„œ draft ์ด true ๋กœ ์„ค์ •๋œ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ํ•„ํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค. ์บ์‹ฑ ๋ฌธ์ œ๊ฐ€์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (๊ฐœ๋ฐœ ํ›„ ๋นŒ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ฟผ๋ฆฌ atm์„ ๋‹ค์‹œ ์‹คํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค). ๊ทธ๋Ÿฌ๋‚˜ ํ”„๋กœ๋•์…˜ ๋นŒ๋“œ์— netlify (๋˜๋Š” ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ CI / CD)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰

๊ด€๋ จ ๋ฌธ์ œ

totsteps picture totsteps  ยท  3์ฝ”๋ฉ˜ํŠธ

kalinchernev picture kalinchernev  ยท  3์ฝ”๋ฉ˜ํŠธ

theduke picture theduke  ยท  3์ฝ”๋ฉ˜ํŠธ

andykais picture andykais  ยท  3์ฝ”๋ฉ˜ํŠธ

jimfilippou picture jimfilippou  ยท  3์ฝ”๋ฉ˜ํŠธ