Gatsby: [fsevents ๋ฒ„๊ทธ] MacOS์—์„œ "์†Œ์Šค ๋ฐ ๋ณ€ํ™˜ ๋…ธ๋“œ"/ "createPagesStatefully"์—์„œ ๋ฉˆ์ถค

์— ๋งŒ๋“  2019๋…„ 08์›” 28์ผ  ยท  97์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: gatsbyjs/gatsby

๊ธฐ์ˆ 

ํ…Œ๋งˆ ์ž‘์—… ์ค‘์ด๋ฉฐ ๋กœ์ปฌ ๋นŒ๋“œ๊ฐ€ ๋ฌธ์ œ์—†์ด ์ž˜ ์ž‘๋™ํ–ˆ์œผ๋ฉฐ ์ตœ๊ทผ์— ๋ชจ๋“  ์ข…์†์„ฑ์„ Gatsby 2.14.0์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ณ  gatsby develop ๋ฐ gatsby build ์—์„œ source and transform nodes ์ค‘๋‹จ ๋‚ด ๋กœ์ปฌ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ.

ํฅ๋ฏธ๋กญ๊ฒŒ๋„ Netlify๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘๋™ํ•˜๊ณ  ๊ตฌ์ถ•๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‚ด ์‹œ์Šคํ…œ์— ๋ฌด์–ธ๊ฐ€๊ฐ€ ์žˆ์Œ์„ ๊ฐ€๋ฆฌํ‚ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ž‘์—… ๊ณต๊ฐ„๊ณผ ๋ฃจํŠธ ์ž‘์—… ๊ณต๊ฐ„ ํด๋”์—์„œ ๋…ธ๋“œ ๋ชจ๋“ˆ ํด๋”๋ฅผ ์‚ญ์ œํ•˜๊ณ  ์ƒˆ๋กœ์šด yarn ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ yarn.lock ๋ฐ package.lock ํŒŒ์ผ์„ ์‚ญ์ œํ–ˆ์Šต๋‹ˆ๋‹ค ... ์ด๋กœ ์ธํ•ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์žฌํ˜„ ๋‹จ๊ณ„

ํ…Œ๋งˆ ์ €์žฅ์†Œ๋Š” ์—ฌ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค : Gatsby-Theme-Catalyst-Core

Starter repo๋Š” ์—ฌ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค : Gatsby-Starter-Catalyst-Core

๊ฐœ๋ฐœ์„ ์œ„ํ•ด ์›์‚ฌ ์ž‘์—… ๊ณต๊ฐ„์—์ด ์„ค์ •์ด ์žˆ์ง€๋งŒ gatsby new my-catalyst-starter-core https://github.com/ehowey/gatsby-starter-catalyst-core ์‚ฌ์šฉํ•˜์—ฌ ์Šคํƒ€ํ„ฐ๋ฅผ ์ƒˆ๋กœ ์„ค์น˜ํ•˜๋ฉด ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ƒ ๊ฒฐ๊ณผ

์„ฑ๊ณต์ ์œผ๋กœ ๊ตฌ์ถ•

์‹ค์ œ ๊ฒฐ๊ณผ

์›์‚ฌ ์ž‘์—… ๊ณต๊ฐ„ v1.17.3
์›์‚ฌ ์‹คํ–‰ v1.17.3
$ ๊ฐœ์ธ ๋น„ ๊ฐœ๋ฐœ
gatsby-configs ์—ด๊ธฐ ๋ฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ์„ฑ๊ณต-0.122 ์ดˆ
์„ฑ๊ณต๋กœ๋“œ ํ”Œ๋Ÿฌ๊ทธ์ธ-1.964 ์ดˆ
์„ฑ๊ณต onPreInit-0.073 ์ดˆ
์บ์‹œ ์ดˆ๊ธฐํ™” ์„ฑ๊ณต-0.056 ์ดˆ
์„ฑ๊ณต ๋ณต์‚ฌ ๊ฐœ์ธ ๋น„ ํŒŒ์ผ-0.242 ์ดˆ
์„ฑ๊ณต onPreBootstrap-0.087 ์ดˆ
โ ™ ์†Œ์Šค ๋ฐ ๋ณ€ํ™˜ ๋…ธ๋“œ

ํ™˜๊ฒฝ

์ฒด๊ณ„:
์šด์˜์ฒด์ œ : macOS High Sierra 10.13.6
CPU : (2) x64 Intel (R) Core (TM) 2 Duo CPU P8600 @ 2.40GHz
์…ธ : 3.2.57-/ bin / bash
๋ฐ”์ด๋„ˆ๋ฆฌ :
๋…ธ๋“œ : 12.9.1-/ usr / local / bin / node
์›์‚ฌ : 1.17.3-/ usr / local / bin / yarn
npm : 6.11.2-/ usr / local / bin / npm
์–ธ์–ด :
Python : 2.7.16-/ usr / local / bin / python
๋ธŒ๋ผ์šฐ์ € :
ํฌ๋กฌ : 76.0.3809.100
Firefox : 67.0.2
Safari : 12.1.2
npmGlobalPackages :
gatsby-cli : 2.7.40

confirmed cli bug

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

์•ˆ๋…•ํ•˜์„ธ์š”, fsevents ์˜ ํŒจ์น˜ ๋ฒ„์ „์ด ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. yarn.lock ํŒŒ์ผ์„ ์‚ญ์ œํ•˜๊ณ  yarn์„ ๋‹ค์‹œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์ข…์†์„ฑ์€ ์ž๋™์œผ๋กœ [email protected] ์„ ์„ ํƒํ•ด์•ผ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

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

์—…๋ฐ์ดํŠธ ๋จ-gatsby-node.js ํŒŒ์ผ์— ๋Œ€ํ•œ ์ฃผ์„ ์ฒ˜๋ฆฌ๋ฅผ ํ…Œ์ŠคํŠธํ–ˆ์œผ๋ฉฐ ๋นŒ๋“œ๊ฐ€ ํ•œ ๋ฒˆ์— ์ง„ํ–‰๋˜์—ˆ์ง€๋งŒ ๋‹ค์‹œ ์‹œ๋„ํ•˜๊ณ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ๋Š”๋ฐ ๊ฐ™์€ ์œ„์น˜์— ๋‹ค์‹œ ๋ฉˆ์ท„์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋‚ด ์˜ค๋ž˜๋œ ์ปดํ“จํ„ฐ ์ธ 2010 Macbook Pro (8GB Ram ๋ฐ SSD๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ ๋จ) ๋•Œ๋ฌธ์ผ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์•„์ง ์ €๋ฅผ ๋ฉˆ์ถ”์ง€ ์•Š์•˜์ง€๋งŒ ๊ทธ ๋‚ ์ด ์ œํ•œ๋˜์–ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ €์—๊ฒŒ ์ทจ๋ฏธ์ด๊ณ  ์–ด๋ฆฐ ์•„์ด๋“ค์ด์žˆ์–ด์„œ ์—…๊ทธ๋ ˆ์ด๋“œ ๋œ ๋žจ๊ณผ SSD๋กœ ์ž˜ ์ž‘๋™ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ƒˆ ์ปดํ“จํ„ฐ์— ๋ˆ์„ ์“ธ ๋ˆ์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‚ด๊ฐ€ ์•ˆ์ •๋œ ๋งˆ์ง€๋ง‰ ๋ฒ„์ „ ์ธ ๊ฐœ์ธ ๋น„ 2.13.52๋กœ ๋˜๋Œ๋ฆฌ๋ ค ๊ณ  ์‹œ๋„ํ–ˆ๊ณ , 16.8.6์— ๋ฐ˜์‘ํ•˜๊ธฐ ์œ„ํ•ด ๋˜๋Œ๋ฆฌ๋ ค ๊ณ  ์‹œ๋„ํ–ˆ๋‹ค.

ํฅ๋ฏธ๋กญ๊ฒŒ๋„ ๋‚˜๋Š” 16.8.6์œผ๋กœ ๋ฐ˜์‘์„ ๋˜ ๋Œ๋ ธ์„ ๋•Œ ํ•œ ๋ฒˆ ์„ฑ๊ณต์ ์œผ๋กœ ๋นŒ๋“œํ–ˆ์ง€๋งŒ ๊ทธ ํ›„ ์ฒ˜์Œ์œผ๋กœ ๊ฐ™์€ ์ง€์ ์— ๋Š๊ฒผ๋Š”๋ฐ ์ด๋Š” ๋‚˜์—๊ฒŒ ์ •๋ง ์ด์ƒํ•œ ํ–‰๋™์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋˜ํ•œ ๋“œ๋ฌผ๊ฒŒ ์•„๋ฌด ์ด์œ ์—†์ด ์ž˜ ์ง€์„ ์ˆ˜ ์žˆ๋„๋ก ๋ถ„๋ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์šด์œจ์ด๋‚˜ ์ด์œ ๊ฐ€์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜์žˆ๋Š” ํŒจํ„ด์ด๋‚˜ ์˜ค๋ฅ˜๋ฅผ ์ฐพ๋Š” ๋ฐ ๋ช‡ ์‹œ๊ฐ„์„ ๋ณด๋ƒˆ์ง€ ๋งŒ ์•„๋ฌด๊ฒƒ๋„ ์ฐพ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” https://github.com/gatsbyjs/gatsby/issues/6654๋ฅผ ๊ฒ€ํ† ํ•˜๊ณ  ๊ฑฐ๊ธฐ์—์žˆ๋Š” ์ผ๋ถ€ ํ•ญ๋ชฉ์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์•„๋ฌด ์†Œ์šฉ์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์ฝ”๋“œ์— ๋ˆˆ์— ๋„๋Š” ๋ณ€๊ฒฝ์ด์—†์ด ๋™์ž‘์ด ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด๊ฐ€ ๋งŒ๋‚œ ๊ฐ€์žฅ ์ด์ƒํ•œ ๋ฒ„๊ทธ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” ๋นŒ๋“œ๊ฐ€ ์†Œ์Šค ๋ฐ ๋ณ€ํ™˜ ๋…ธ๋“œ์—์„œ ์ค‘๋‹จ๋˜๊ณ  (์‹œ๊ฐ„์˜ 60 %), ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” Create Pages Statefully (20 %)์—์„œ ์ค‘๋‹จ๋˜๊ณ , ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” ์„ฑ๊ณต์ ์œผ๋กœ ๋นŒ๋“œ๋ฉ๋‹ˆ๋‹ค (20 %). ์ฝ”๋“œ ์ค„์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ์ด๋Ÿฌํ•œ ์„ธ ๊ฐ€์ง€ ๋™์ž‘์„ ๋ชจ๋‘ ํ‘œ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š”์ด ๋™์ž‘์„ gatsby-starter-blog์—์„œ๋„ ๋ณต์ œํ–ˆ๋Š”๋ฐ, ์ •๋ง ์ด์ƒํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ ์ด๊ฒƒ์ด ๋‚ด ์ชฝ์˜ ๋ฌธ์ œ๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ํฅ๋ฏธ๋กญ๊ฒŒ๋„ createPagesStatefully ์—๋งŒ ๋งค๋‹ฌ๋ฆฝ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด์ œ ๊ทธ๊ฒƒ์ด ํ™ˆ๋ธŒ๋ฅ˜์— ์˜ํ•ด ์ž๋™์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๊ด€๋ จ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์•Œ์ง€ ๋ชปํ•˜์ง€๋งŒ ๋‚ด๊ฐ€ ํ…Œ์ŠคํŠธํ•˜์ง€ ์•Š์€ ๊ฒƒ์€ ๋‚ด๊ฐ€ ์ƒ๊ฐํ•  ์ˆ˜์žˆ๋Š” ์œ ์ผํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ง€๊ธˆ๊นŒ์ง€ ์‹œ๋„ํ•œ ์ž‘์—… ๋ชฉ๋ก์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋…ธ๋“œ ๋ฒ„์ „ ๋ณ€๊ฒฝ, 12, 10 ๋ฐ 8 ์‹œ๋„

  • ์ž‘๋™ ์ค‘์ด๋˜ ์ปค๋ฐ‹ ๊ธฐ๋ก์˜ ์ด์ „ ์ง€์ ์œผ๋กœ ๋˜ ๋Œ๋ฆฌ๋ฉด ์—ฌ์ „ํžˆ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

  • ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ฐ gatsby-config ์˜์—ญ ์ฃผ์„ ์ฒ˜๋ฆฌ

  • ๋‚ด gatsby-node.js์˜ ๋‚ด์šฉ์„ ์ฃผ์„ ์ฒ˜๋ฆฌ

  • Netlify์—์„œ ๋‹ค์‹œ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์„ฑ๊ณต์ ์œผ๋กœ ๊ตฌ์ถ•๋˜์—ˆ์œผ๋ฏ€๋กœ ๋‚ด ์ปดํ“จํ„ฐ์™€ ๊ด€๋ จ์ด ์žˆ์–ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

  • ๋‚ด src / pages ๋””๋ ‰ํ† ๋ฆฌ์—์„œ 4 ํŽ˜์ด์ง€๋ฅผ ์‚ญ์ œํ•˜๊ณ  ๋งค์šฐ ๊ธฐ๋ณธ์ ์ธ index.mdx ํŒŒ์ผ์— ๋„ฃ์Šต๋‹ˆ๋‹ค.

  • ๋ชจ๋“  node_module ๋ฐ ์ž ๊ธˆ ํŒŒ์ผ ์‚ญ์ œ, ์žฌ์„ค์น˜

  • ์ปดํ“จํ„ฐ ๋‹ค์‹œ ์‹œ์ž‘

  • Github์—์„œ ํ…Œ๋งˆ / ์Šคํƒ€ํ„ฐ์˜ ์ƒˆ๋กœ์šด ๋ณต์ œ๋ณธ์œผ๋กœ ์ƒˆ๋กœ์šด ์‹ค ์ž‘์—… ๊ณต๊ฐ„์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

  • gatsby-starter-blog ํ…Œ์ŠคํŠธ, ์œ ์‚ฌํ•œ ๋™์ž‘์ด์ง€๋งŒ createPagesStatefully ์—์„œ ๋ฉˆ์ถค

์•ˆ๋…•ํ•˜์„ธ์š”,

๋‚˜๋Š” ๊ฑฐ์˜ ํ•  ์ˆ˜ ์—†์ง€๋งŒ ์—ฌ๋Ÿฌ ๊ฐœ์ธ ๋น„ ์Šคํƒ€ํ„ฐ ์—์„œ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ์žˆ์Œ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹น์‹ ์ด ์ง€์ ํ•œ ๋ฐ”์™€ ๊ฐ™์ด, ๋•Œ๋•Œ๋กœ "์†Œ์Šค ๋ฐ ๋ณ€ํ™˜ ๋…ธ๋“œ"๋˜๋Š” createPagesStatefully์— ๋งค๋‹ฌ๋ ค ๋นŒ๋“œํ•˜๊ฑฐ๋‚˜ ๋นŒ๋“œ๋ฅผ ์ค‘์ง€ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

๋งค์šฐ ์‹ค๋ง์Šค๋Ÿฝ๊ณ  ๊ทธ๊ฒƒ์„ ๊ณ ์น˜๊ธฐ ์œ„ํ•ด ๊ฐ€์žฅ ํ„ฐ๋ฌด๋‹ˆ์—†๋Š” ์‹œ๋„๋ฅผ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š”์ด ๋ฌธ์ œ๋ฅผ ๋ชฉ๊ฒฉํ•˜์ง€ ๋ชปํ–ˆ์ง€๋งŒ ์ด๊ฒƒ์€ ์–ด์ƒ‰ํ•˜๊ฒŒ ๋“ค๋ฆฌ๋ฉฐ์ด ํ–‰๋™์˜ ์ด์œ ๋ฅผ ์ •๋ง๋กœ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋น„
๋…ธ๋“œ ๋””๋ฒ„๊ฑฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ์˜ ์›์ธ์„ ์ฐพ์•„์•ผํ•ฉ๋‹ˆ๋‹ค. package.json์˜ ์ž‘์—…์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. VSCode๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ "์ž๋™ ์—ฐ๊ฒฐ"์„ ํ™œ์„ฑํ™”ํ•˜์—ฌ์ด ์ž‘์—…๊ณผ ํ•จ๊ป˜ ๋‚ด๋ถ€ ๋””๋ฒ„๊ฑฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (์ด ๋ชฉ์ ์œผ๋กœ ๋‚ด๋ถ€ ํ„ฐ๋ฏธ๋„์„ ์‚ฌ์šฉํ•ด์•ผ ํ•จ).

"start:debug": "node --inspect=127.0.0.1:9232 node_modules/.bin/gatsby develop",

๋ฌผ๋ก  ๋””๋ฒ„๊น…์€ ๋ชจ๋“  IDE์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋””๋ฒ„๊ฑฐ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์—ฐ๊ฒฐํ–ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ๋งŒํ•˜๋ฉด๋ฉ๋‹ˆ๋‹ค.

1. ๋ณ€ํ˜• : ์ตœ์†Œ ์ƒ์‹
createPagesStatefully ์„ ๋ฌธ์ œ์˜ ์›์ธ์œผ๋กœ ์–ธ๊ธ‰ํ•˜์…จ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ๋ฌธ์ œ์˜ ์›์ธ์ด๋ผ๊ณ  ํ™•์‹ ํ•œ๋‹ค๋ฉด ์•„์ฃผ ์ž‘์€ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด ์žฌํ˜„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์Šคํƒ€ํ„ฐ๋ฅผ ๋ฒ„๋ฆฌ๊ณ  ๊ฐœ์ธ ๋น„๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜๊ณ  ์Šคํƒ€ํ„ฐ๊ฐ€ํ•˜๋Š” ์ผ์„ ๋ชจ๋ฐฉ ํ•œ ๋ช‡ ๊ฐ€์ง€ ์˜ˆ์ œ์™€ ํ•จ๊ป˜ createPagesStatefully ์—์„œ gatsby-node.js ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ gatsby๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ๋…ธ๋“œ ๊ฒ€์‚ฌ๋ฅผ ํ†ตํ•ด ๋””๋ฒ„๊ทธํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ ‡๊ฒŒํ•˜๋ฉด ์–ด๋””์— ๋งค๋‹ฌ๋ ค ์žˆ๋Š”์ง€ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2. ๋Œ€์•ˆ : ํ”„๋กœ์ ํŠธ / ์Šคํƒ€ํ„ฐ ๋‚ด๋ถ€
๋ฌผ๋ก  ๋™์ผํ•œ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ ๋‚ด์—์„œ ๋ฌธ์ œ๋ฅผ ๋””๋ฒ„๊น… ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์•„๋งˆ๋„ ๋‹น์‹ ์€ ๋ฌธ์ œ์˜ ์›์ธ์— ๋Œ€ํ•œ ๋‹น์‹ ์˜ ๊ฒฌํ•ด๋ฅผ ๋ชจํ˜ธํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‚˜๋Š” ํ•ญ์ƒ ๋””๋ฒ„๊ทธ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ์ตœ์†Œํ•œ์˜ ์žฌํ˜„์„ ์–ป์œผ๋ ค๊ณ  ๋…ธ๋ ฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ–‰์šด์„ ๋น•๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ... ์ž ๊ธˆ ํŒŒ์ผ์— ์ด์ƒํ•œ ํ–‰๋™์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค. ๋” ๋งŽ์€ ๊ฒƒ์„ ์•„๋Š” ์‚ฌ๋žŒ์ด ๋‚˜๋ฅผ ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ ์•ˆ๋‚ด ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ์†Œํ•œ์˜ ์ž‘์—… ๋นŒ๋“œ๋ฅผ ์–ป์œผ๋ ค๋Š” ๊ณผ์ •์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ "hello world"Gatsby ์„ค์น˜๋ฅผ ์ œ๊ฑฐํ–ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜๋Š”๋ฐ ์ •๋ง ์ด์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

๋” ์ด์ƒํ•˜๊ฒŒ ๋œ ๊ณณ์€ ์‹ค์ œ gatsby-starter-hello-world๊ฐ€ ๋‚ด ์ปดํ“จํ„ฐ์—์„œ ์ž˜ ์ž‘๋™ํ•˜๊ณ  ์ž˜ ๊ตฌ์ถ•๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ... ์ž ๊ธˆ ํŒŒ์ผ์„ ์‚ญ์ œํ•˜๊ณ  ์–€์ด ์ƒˆ ์ž ๊ธˆ ํŒŒ์ผ์„ ๋‹ค์‹œ ๋นŒ๋“œํ•˜๋ฉด ๋นŒ๋“œ๊ฐ€ ์‹คํŒจํ•˜๊ณ  ์†Œ์Šค ๋ฐ ๋ณ€ํ™˜ ๋…ธ๋“œ์—์„œ ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค. "hello-world"์—์„œ ์ž ๊ธˆ ํŒŒ์ผ์„ ๋ณต์‚ฌํ•˜๊ณ  ์ด๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋นŒ๋“œ ํ•  ์ตœ์†Œํ•œ์˜ ๊ตฌํ˜„์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ˜„์žฌ์˜ ์ด๋ก ์€ ์ž ๊ธˆ ํŒŒ์ผ์—์ด ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค๋Š” ์ผ์ข…์˜ ๋ฒ„์ „ ๋ฌธ์ œ๊ฐ€ ์žˆ์ง€๋งŒ ์—ฌ๊ธฐ์— ๊ฐ‡ํ˜€ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋˜ํ•œ ๋‚ด ํ™ˆ๋ธŒ๋ฅ˜ ์„ค์น˜๋ฅผ ๋ชจ๋‘ ์‚ญ์ œํ•˜๊ณ  node, yarn, git ๋“ฑ์„ ๋‹ค์‹œ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ์ € ์žฌ๋ฏธ์žˆ๋Š” ์‚ฌ์—…์ด ์•„๋‹Œ์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด.

@ehowey ์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค .... ๊ฝค ๊ฐ„ํ—์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜ ๋ฟ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค (ํ•˜์ง€๋งŒ ์‹œ๊ฐ„์˜ 50 % ์ด์ƒ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค). ์ƒํ™ฉ์„ ๋””๋ฒ„๊น…ํ•˜๊ธฐ ์œ„ํ•ด ๋‹น์‹ ๊ณผ ๋˜‘๊ฐ™์ด ํ–ˆ์ฃ . โ ™ source and transform nodes ์— ๋งค๋‹ฌ๋ฆฌ๋ฉด ์ผ๋ฐ˜์ ์œผ๋กœ ํ„ฐ๋ฏธ๋„์„ ์ฃฝ์—ฌ์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋ญ”๊ฐ€๋ฅผ ์ฐพ์œผ๋ฉด ์•Œ๋ ค ์ค„๊ฒŒ. ๊ทธ๋ฆฌ๊ณ ์ด ์Šค๋ ˆ๋“œ๋„ ๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@georgiee--- inspect ์ •๋ณด์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. WebStorm์œผ๋กœ ์ž‘์—…ํ•˜๋Š” ๋…ธ๋“œ ๋””๋ฒ„๊น…์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š”์ง€ ์‚ดํŽด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋˜ํ•œ ์ตœ์†Œํ•œ์˜ ์žฌ์ƒ์‚ฐ์— ๋Œ€ํ•œ ๋‹น์‹ ์˜ ์ƒ๊ฐ์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ œ๊ฐ€ Gatsby๋ฅผ ์ข€ ๋” ๊นŠ์ด ์ดํ•ดํ•˜๋Š” ๋ฐ์—๋Š” ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.

ํ˜„์žฌ "์†Œ์Šค ๋ฐ ๋ณ€ํ™˜ ๋…ธ๋“œ"์— ๋งค๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค. ๋“œ๋ฌผ๊ฒŒ createPagesStatefully๋กœ ๋งŒ๋“ค๊ณ  ๊ฑฐ๊ธฐ์— ๋ฉˆ ์ถฅ๋‹ˆ ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ •์ƒ์ ์œผ๋กœ ๋นŒ๋“œ๋ฉ๋‹ˆ๋‹ค.

์ทจ์•ฝํ•œ ์ข…์†์„ฑ์„ ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•ด "yarn ์—…๊ทธ๋ ˆ์ด๋“œ"๋ฅผ ์ˆ˜ํ–‰ ํ•œ ํ›„์—๋„ ํ˜„์žฌ ๋™์ผํ•œ ๋ฌธ์ œ์— ์ง๋ฉดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ์„ค์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ฒด๊ณ„:
์šด์˜์ฒด์ œ : macOS 10.15
CPU : (4) x64 Intel (R) Core (TM) i7-7567U CPU @ 3.50GHz
์…ธ : 5.7.1-/ bin / zsh
๋ฐ”์ด๋„ˆ๋ฆฌ :
๋…ธ๋“œ : 12.8.1-/ usr / local / bin / node
์›์‚ฌ : 1.17.3-/ usr / local / bin / yarn
npm : 6.10.3-/ usr / local / bin / npm
์–ธ์–ด :
Python : 2.7.16-/ usr / local / bin / python
๋ธŒ๋ผ์šฐ์ € :
ํฌ๋กฌ : 76.0.3809.132
Firefox : 68.0.2
์‚ฌํŒŒ๋ฆฌ : 13.0
npm ํŒจํ‚ค์ง€ :
๊ฐœ์ธ ๋น„ : ^ 2.13.42 => 2.14.7
๊ฐœ์ธ ๋น„ ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง€ : ^ 0.8.3 => 0.8.6
๊ฐœ์ธ ๋น„ ์ด๋ฏธ์ง€ : ^ 2.2.7 => 2.2.15
gatsby-plugin-manifest : ^ 2.2.4 => 2.2.10
gatsby-plugin-netlify : ^ 2.1.4 => 2.1.10
gatsby-plugin-netlify-cms : ^ 4.1.6 => 4.1.12
gatsby-plugin-offline : ^ 2.2.5 => 2.2.10
gatsby-plugin-react-helmet : ^ 3.1.2 => 3.1.5
gatsby-plugin-react-svg : ^ 2.1.1 => 2.1.2
gatsby-plugin-sass : ^ 2.1.3 => 2.1.12
gatsby-plugin-sharp : ^ 2.2.9 => 2.2.18
gatsby-plugin-typography : ^ 2.3.2 => 2.3.5
gatsby-plugin-webfonts : ^ 1.1.0 => 1.1.0
๊ฐœ์ธ ๋น„ ๋ฐœ์–ธ ์ด๋ฏธ์ง€ : ^ 3.1.10 => 3.1.19
๊ฐœ์ธ ๋น„ ๋ฐœ์–ธ ์ƒ๋Œ€ ์ด๋ฏธ์ง€ v2 : ^ 0.1.5 => 0.1.5
gatsby-remark-responsive-iframe : ^ 2.2.5 => 2.2.10
๊ฐœ์ธ ๋น„ ์†Œ์Šค ํŒŒ์ผ ์‹œ์Šคํ…œ : ^ 2.1.6 => 2.1.18
๊ฐœ์ธ ๋น„ ๋ณ€์••๊ธฐ ๋ฐœ์–ธ : ^ 2.6.12 => 2.6.19
๊ฐœ์ธ ๋น„-ํŠธ๋žœ์Šคํฌ๋จธ-์ƒคํ”„ : ^ 2.2.5 => 2.2.12

์ทจ์•ฝํ•œ ์ข…์†์„ฑ์„ ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•ด "yarn ์—…๊ทธ๋ ˆ์ด๋“œ"๋ฅผ ์ˆ˜ํ–‰ ํ•œ ํ›„์—๋„ ํ˜„์žฌ ๋™์ผํ•œ ๋ฌธ์ œ์— ์ง๋ฉดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ์„ค์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ : ์ด์ „ "yarn.lock"ํŒŒ์ผ์„ ๋ณต์›ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

๋ฟก ๋นต๋€จ

์—…๋ฐ์ดํŠธ : ์ด์ „ "yarn.lock"ํŒŒ์ผ์„ ๋ณต์›ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ๊ฒฝํ—˜์— ๋”ฐ๋ฅด๋ฉด ๋‚˜์ค‘์— ๋‹ค์‹œ ๋Œ์•„์˜ฌ ๋ช…ํ™•ํ•œ ์ด์œ ์—†์ด ๋ฌธ์ œ๊ฐ€ ์‚ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. yarn.lock์„ ๋ณต์› ํ•˜์˜€์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋ฐ˜ํ’ˆ์— ๋ฌธ์ œ๊ฐ€์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์—๊ฒŒ ๊ณ„์† ์•Œ๋ ค์ค˜.

๋‹ค์Œ์€ gatsby-starter-hello-world๋ฅผ ์‚ฌ์šฉํ•œ ์ตœ์†Œ ๋ณต์ œ์ž…๋‹ˆ๋‹ค.

https://github.com/ehowey/gatsby-test-lockfiles

๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ํฌํ•จ ๋œ ํ˜„์žฌ ์ž ๊ธˆ ํŒŒ์ผ์€ ์ €์—๊ฒŒ ์‹คํŒจํ•œ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ yarn-working.lock ๋ฐ yarn-notworking.lock ์˜ ์ €์žฅ์†Œ์— ์‚ฌ๋ณธ์„ ํฌํ•จํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ๋” ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋‚ด ํ˜„์žฌ ํ™˜๊ฒฝ :

์ฒด๊ณ„:
์šด์˜์ฒด์ œ : macOS High Sierra 10.13.6
CPU : (2) x64 Intel (R) Core (TM) 2 Duo CPU P8600 @ 2.40GHz
์…ธ : 3.2.57-/ bin / bash
๋ฐ”์ด๋„ˆ๋ฆฌ :
๋…ธ๋“œ : 10.16.3-/ usr / local / bin / node
์›์‚ฌ : 1.17.3-/ usr / local / bin / yarn
npm : 6.10.3-/ usr / local / bin / npm
์–ธ์–ด :
Python : 2.7.10-/ usr / bin / python
๋ธŒ๋ผ์šฐ์ € :
ํฌ๋กฌ : 76.0.3809.132
Firefox : 67.0.2
Safari : 12.1.2
npm ํŒจํ‚ค์ง€ :
๊ฐœ์ธ ๋น„ : ^ 2.13.73 => 2.15.0
npmGlobalPackages :
gatsby-cli : 2.7.40

๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ฐพ์€ ๋ฐฉํ–ฅ :

  1. ๊ทธ๋ ˆ์ด๋“œ gatsby-plugin-sitemap ๋ถ€ํ„ฐ 2.2.9 ๋กœ 2.2.6 ๊ฐ€์ง„ ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐ yarn develop .

    • gatsby-plugin-sitemap ๊ฐ€ ๊ฐœ๋ฐœ ๋นŒ๋“œ์— ์˜ํ–ฅ์„์ฃผ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ด์ƒํ•ฉ๋‹ˆ๋‹ค.
  2. yarn build ์—ฌ์ „ํžˆ ์ž‘๋™ํ•˜์ง€ ์•Š์ง€๋งŒ ๊ตฌ์„ฑ์—์„œ gatsby-plugin-sitemap ์ œ๊ฑฐํ•˜๋ฉด yarn build ๊ฐ€ ๋‹ค์‹œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

@sharvit ์ œ ๊ฒฝ์šฐ์—๋Š” ์ด๊ฒƒ์ด ์ž‘๋™ํ•˜์ง€ ์•Š์•˜๋‹ค๊ณ ๋ณด๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ๋‹น์‹ ์„ ์œ„ํ•ด ๊ณ ์ณ์„œ ๋‹คํ–‰์ž…๋‹ˆ๋‹ค. ๊ถ๊ทน์ ์œผ๋กœ ์ž ๊ธˆ ํŒŒ์ผ๊ณผ ๊ด€๋ จ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ž ๊ธˆ ํŒŒ์ผ์˜ ๋‚ด๋ถ€ ๊นŠ์ˆ™ํ•œ ๊ณณ์— ์ด์ƒํ•œ ๋ฒ„์ „ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ „ ์ž ๊ธˆ ํŒŒ์ผ๋กœ ๋˜๋Œ๋ฆฌ๊ณ  ๋ณต์‚ฌ ๋ฐ ๋ถ™์—ฌ ๋„ฃ๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์ž‘์—… ๋นŒ๋“œ๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ Ctrl + C๋ฅผ ๋ˆŒ๋Ÿฌ ๋นŒ๋“œ๊ฐ€ ์ค‘๋‹จ ๋œ ๊ฒฝ์šฐ ๋นŒ๋“œ๋ฅผ ๊ฐ•์ œ ์ข…๋ฃŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.์ด ๊ณผ์ •์—์„œ ํ•œ ์ง€์ ์—์„œ ํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์ž ๊ธˆ ํŒŒ์ผ์—์„œ ๋ฌด์—‡์ด ์ˆ˜์ •๋˜์—ˆ๋Š”์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ์œ„์— ๊ฒŒ์‹œ ํ•œ ์ €์žฅ์†Œ์— ์ž ๊ธˆ ํŒŒ์ผ ๋‘ ๊ฐœ (์ž‘๋™ํ•˜๋Š” ๊ฒƒ๊ณผ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๋ณต์‚ฌ๋ณธ)๊ฐ€์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ฒŒ๋ ˆ์˜ ์ด์ƒํ•œ ์ง์Šน์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ปดํ“จํ„ฐ ์˜์—ญ์—์„œ๋Š” ์ผ์ด ์•ˆ์‹ฌํ•˜๊ณ  ์ž‘๋™ํ•˜๊ฑฐ๋‚˜ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@steinitz ๋๋‚ฌ์–ด ? ๋‹น์‹ ์ด ์–ธ๊ธ‰ ํ•œ ์ผ์ด ์ผ์–ด๋‚ฌ์Šต๋‹ˆ๋‹ค. ๋” ์ข‹์•„์ง€๊ณ  ๊ฝค ์ข‹์•„ ๋ณด์˜€์ง€๋งŒ ์™„๋ฒฝํ•˜์ง€๋Š” ์•Š์•˜๊ณ  ์ด์ œ ๊ฑฐ์˜ ๋งค๋ฒˆ ์‹คํŒจํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฝค ์‹ค๋ง ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

ํ—‰

๋‹น์‹ ์ด ์ƒ์ƒํ•  ์ˆ˜ ์žˆ๋“ฏ์ด,์ด ๋ฌธ์ œ์˜ ๋ฐ˜๋ณต์  ์ธ ํŠน์„ฑ ๋•Œ๋ฌธ์— ๋‚˜๋Š”๋ณด๊ณ ํ•˜๋Š” ๊ฒƒ์„ ์ฃผ์ €ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์ ์ ˆํ•œ ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค.

node_modules ๋””๋ ‰ํ† ๋ฆฌ ์‚ญ์ œ ํ›„ yarn.lock ์‚ญ์ œ ํ›„ ์‹คํ–‰
npx yarn-upgrade-all
๊ณผ
yarn install
๋ชจ๋“ ๊ฒŒ ๊ดœ์ฐฎ ์•˜์–ด.

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ฐฉ๊ธˆ ๊ท€ํ•˜์˜ ๋ฉ”์‹œ์ง€์— ์‘๋‹ตํ•˜์—ฌ
yarn start
๊ฒฐ๊ณผ : ๋‹ค์‹œ ๋ฉˆ์ถค
source and transform nodes

๋‚˜๋Š” ๋‘ ๊ฐ€์ง€ ํ˜„๋ช…ํ•œ ์ผ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

  1. @georgiee ์˜ ์กฐ์–ธ์„ ๋ฐ›์•„ Webstorm์˜ ๋””๋ฒ„๊น… ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์‹ญ์‹œ์˜ค.
    node --inspect ๊ทธ๋ฆฌ๊ณ  ๋ช…๋ฐฑํ•œ ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธ
  2. ๋˜‘๋˜‘ํ•œ ์‚ฌ๋žŒ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด Gatsby๋ฅผ ์ž ์‹œ ๋”ฐ๋กœ ๋‘์‹ญ์‹œ์˜ค.

์ตœ์‹  ์ •๋ณด:

ctl-C'd ์œ„์˜ ๋ฉˆ์ถค ํ”„๋กœ์„ธ์Šค (๋‘ ๋ฐฐ๋กœ ์„ฑ๊ฐ€์‹  ๋ฉˆ์ถค ํ”„๋กœ์„ธ์Šค๋ฅผ ์ค‘์ง€ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ).
๊ทธ๋Ÿฐ ๋‹ค์Œ yarn start ์€ (๋Š”) createPagesStatefully ์— ๋ถ™์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
ctl-C'd, ๋˜ ๋‹ค๋ฅธ yarn start - source and transform nodes ๊ณ ์ •๋จ
ctl-C'd ํ•œ ๋ฒˆ ๋” (์ง€์˜ฅ์„ ์œ„ํ•ด)-์ด๋ฒˆ์—๋Š” yarn start ์ž‘๋™ํ–ˆ๊ณ  ์‹คํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค.

๋ฌด์—‡์„ ๋งŒ๋“ค์–ด์•ผํ• ์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ๊ฑฐ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‚ด๊ฐ€๋ณด๊ณ ์žˆ๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋Š˜ ๋ฐค์€ 1/10 ์ดํ•˜๋กœ ์„ฑ๊ณต์ ์œผ๋กœ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚˜๋น  ๋ณด์ž…๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋ฐ / ์ฝ”๋”ฉ ๊ด€์ ์—์„œ ์ด๊ฒƒ์€ ๋งค์šฐ ์ด์ƒํ•œ ํ–‰๋™์ž…๋‹ˆ๋‹ค. ์ผํ™” ์ ์œผ๋กœ ๋ฉฐ์น  ์ „ 2.15.1์—์„œ ์˜ค๋Š˜ 2.15.6์—์„œ ๋” ์ž˜ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์˜€์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋˜ํ•œ ์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€์ด ๋ฒ„๊ทธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๊ณตํ†ต์ ์„ ๊ณต์œ ํ•˜๊ณ  ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. gatsby info --clipboard ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ณ  ๊ฒŒ์‹œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋ถ„๋ช…ํžˆ ๋„๋ฆฌ ํผ์ ธ ์žˆ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋ณด๊ณ ์„œ๊ฐ€ ๋„˜์ณ๋‚  ๊ฒƒ์ด์ง€๋งŒ ์›๋ž˜ ์ƒ๊ฐํ–ˆ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ ์ € ๋ฟ๋งŒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋ชจ๋‘ ์›์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ œ๊ฐ€ ์›์‚ฌ ์ž‘์—… ๊ณต๊ฐ„์—์„œ ํ…Œ๋งˆ๋ฅผ ์ž‘์—… ํ•  ๋•Œ ์š”๊ตฌ๋˜๋Š” ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์—ฌ์ „ํžˆ ์ด๊ฒƒ์„ gatsby-starter-hello-world์—์„œ ์žฌํ˜„ ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ•ต์‹ฌ gatsby ํŒŒ์ผ์˜ ์ข…์†์„ฑ ๋ฌธ์ œ ๋˜๋Š” ์ถฉ๋Œ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@ehowey ๋Š” ์š”์ฒญํ•˜์‹  gatsby info

์ฒด๊ณ„:
์šด์˜์ฒด์ œ : macOS 10.14.6
CPU : (4) x64 Intel (R) Core (TM) i7-5557U CPU @ 3.10GHz
์…ธ : 3.2.57-/ bin / bash
๋ฐ”์ด๋„ˆ๋ฆฌ :
๋…ธ๋“œ : 12.9.1-/ usr / local / bin / node
์›์‚ฌ : 1.17.3-/ usr / local / bin / yarn
npm : 6.11.2-/ usr / local / bin / npm
์–ธ์–ด :
Python : 2.7.16-/ usr / local / bin / python
๋ธŒ๋ผ์šฐ์ € :
ํฌ๋กฌ : 76.0.3809.132
Firefox : 68.0.1
Safari : 12.1.2
npm ํŒจํ‚ค์ง€ :
๊ฐœ์ธ ๋น„ : ^ 2.14.3 => 2.14.7
๊ฐœ์ธ ๋น„ ์ด๋ฏธ์ง€ : ^ 2.2.14 => 2.2.15
๊ฐœ์ธ ๋น„ ํ”Œ๋Ÿฌ๊ทธ์ธ ํ”ผ๋“œ : ^ 2.3.9 => 2.3.9
gatsby-plugin-i18n : ^ 1.0.1 => 1.0.1
๊ฐœ์ธ ๋น„ ํ”Œ๋Ÿฌ๊ทธ์ธ๋ฆฌ์Šค : ^ 3.0.2 => 3.0.4
gatsby-plugin-manifest : ^ 2.2.9 => 2.2.10
gatsby-plugin-offline : ^ 2.2.10 => 2.2.10
gatsby-plugin-react-helmet : ^ 3.1.5 => 3.1.5
gatsby-plugin-robots-txt : ^ 1.5.0 => 1.5.0
gatsby-plugin-sharp : ^ 2.2.18 => 2.2.18
gatsby-plugin-sitemap : ^ 2.2.9 => 2.2.9
๊ฐœ์ธ ๋น„ ๋ฐœ์–ธ ์ด๋ฏธ์ง€ : ^ 3.1.19 => 3.1.19
gatsby-remark-prismjs : ^ 3.3.9 => 3.3.9
๊ฐœ์ธ ๋น„ ์†Œ์Šค ํŒŒ์ผ ์‹œ์Šคํ…œ : ^ 2.1.18 => 2.1.18
๊ฐœ์ธ ๋น„ ๋ณ€์••๊ธฐ ๋ฐœ์–ธ : ^ 2.6.19 => 2.6.19
๊ฐœ์ธ ๋น„ ๋ณ€์••๊ธฐ ๋‚ ์นด๋กœ์šด : ^ 2.2.12 => 2.2.12
npmGlobalPackages :
gatsby-cli : 2.7.40

๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์ดํŠธ๊ฐ€ Netlify์— ์™„๋ฒฝํ•˜๊ฒŒ ๊ตฌ์ถ•๋˜์—ˆ์ง€๋งŒ gatsby build ๋ฐ gatsby develop ๋‘˜ ๋‹ค ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ ์‹œ์Šคํ…œ์— ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํŒจํ‚ค์ง€ ๋ฒ„์ „์„ ๊ฐ€์ง€๊ณ  ๋†€๋‹ค๊ฐ€ ๋ฒ„์ „ 2.2.10์—์„œ 2.2.9๋กœ gatsby-plugin-sitemap ๋ฅผ ๋˜ ๋Œ๋ฆฌ๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. ์ด์ƒํ•˜๊ฒŒ๋„ ์—ฌ๊ธฐ์—์žˆ๋Š” ์ผ๋ถ€ ์‚ฌ๋žŒ๋“ค์€ 2.2.9์— ๋ฌธ์ œ๊ฐ€์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ฌธ์ œ๊ฐ€ ๋‹ค๋ฅธ ๊ณณ์— ์žˆ์Œ์„ ์˜๋ฏธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŽธ์ง‘ : ๋„ˆ๋ฌด ๋นจ๋ฆฌ ๋งํ•˜๋ฉด Gatsby๋Š” ํ›จ์”ฌ ๋œ ์ž์ฃผ "์†Œ์Šค ๋ฐ ๋ณ€ํ™˜ ๋…ธ๋“œ"๋ฐ "createPagesStatefully"๋‹จ๊ณ„์—์„œ ๋ฉˆ ์ถฅ๋‹ˆ ๋‹ค.

@goblindegook ์ด๊ฒƒ์€์ด ํŠน์ • ๋ฌธ์ œ์—์„œ ์ผ๋ฐ˜์ ์ธ ํŒจํ„ด์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ๊ฒ‰๋ณด๊ธฐ์— ๋‚ ์”จ, ์‹œ๊ฐ„, ๋ถ€ํŒ… ํ›„ ์‹œ๊ฐ„๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ์‚ฌ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜ํ–‰ ํ•œ ์ž‘์—…์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋‹ค๊ณ  ๋ฏฟ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋„ ๊ฒฝํ—˜ํ•˜๋ฉด์„œ gatsby-plugin-sitemap ์„ 2.2.6์œผ๋กœ ๋‹ค์šด ๊ทธ๋ ˆ์ด๋“œํ–ˆ์œผ๋ฉฐ ๊ทธ ๊ฒฐ๊ณผ ํ•ด๊ฒฐ ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

FWIW, ๋‚˜๋Š” ๋˜ํ•œ ์ด๊ฒƒ์„ ๊ฒฝํ—˜ํ•˜๊ณ  ์žˆ์ง€๋งŒ yarn ๋˜๋Š” gatsby-plugin-sitemap ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚ด gatsby info ๋„์›€์ด๋˜๋Š” ๊ฒฝ์šฐ :

  System:
    OS: macOS 10.14.6
    CPU: (4) x64 Intel(R) Core(TM) i7-7567U CPU @ 3.50GHz
    Shell: 5.3 - /bin/zsh
  Binaries:
    Node: 12.9.1 - /usr/local/bin/node
    npm: 6.11.2 - /usr/local/bin/npm
  Languages:
    Python: 3.7.4 - /usr/local/opt/python/libexec/bin/python
  Browsers:
    Chrome: 76.0.3809.132
    Firefox: 68.0.1
    Safari: 12.1.2
  npmPackages:
    gatsby: ^2.15.1 => 2.15.1 
    gatsby-cli: ^2.7.41 => 2.7.41 
    gatsby-image: ^2.2.15 => 2.2.15 
    gatsby-plugin-catch-links: ^2.1.6 => 2.1.6 
    gatsby-plugin-google-tagmanager: ^2.1.7 => 2.1.7 
    gatsby-plugin-manifest: ^2.2.12 => 2.2.12 
    gatsby-plugin-offline: ^3.0.0 => 3.0.0 
    gatsby-plugin-react-helmet: ^3.1.5 => 3.1.5 
    gatsby-plugin-sass: ^2.1.12 => 2.1.12 
    gatsby-plugin-sharp: ^2.2.18 => 2.2.18 
    gatsby-remark-images: ^3.1.19 => 3.1.19 
    gatsby-source-filesystem: ^2.1.18 => 2.1.18 
    gatsby-transformer-remark: ^2.6.19 => 2.6.19 
    gatsby-transformer-sharp: ^2.2.12 => 2.2.12 
    gatsby-transformer-yaml: ^2.2.7 => 2.2.7 
  npmGlobalPackages:
    gatsby-cli: 2.7.41

๋‚˜๋ฅผ ์œ„ํ•ด gatsby clean ์บ์‹œ๋ฅผ ์ •๋ฆฌํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์„ ์•Œ์•„ ๋‚ด๋ ค๊ณ  ์•„์ง๋„ ์‚ฌ๋ƒฅ์„ํ•˜๊ณ ์žˆ๋‹ค. ๋‚˜์—๊ฒŒ๋Š” ์—ฌ์ „ํžˆ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฐ”๋ฒจ 7.0.0-> 7.5.5์˜ ์ „ํ™˜๊ณผ ๊ด€๋ จ์ด ์žˆ๋Š”์ง€ ์•„๋Š” ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์ด ์Šค์œ„์น˜๋Š” ๋‚ด๊ฐ€์ด ๋ฒ„๊ทธ๋ฅผ ๊ฒฝํ—˜ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์„ ๋•Œ ๋ฐœ์ƒํ–ˆ๊ณ  ๋ฌธ์ œ๊ฐ€ ๋ณด์ด๊ธฐ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ๊ณผ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค ... ๋‚˜๋Š” 7.0.0์—์„œ ๋ฐ”๋ฒจ ๋ฒ„์ „์„ ๊ณ ์ •ํ•˜๊ธฐ ์œ„ํ•ด ์‹ค ํ•ด์ƒ๋„๋ฅผ ์ž‘๋™ ์‹œํ‚ค๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ์ง€๋งŒ ์„ฑ๊ณตํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ์•„์ง.

์•ฝ๊ฐ„์˜ ํ†ต์ฐฐ๋ ฅ์„ ์ œ๊ณต ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ์— ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋„์ค‘์— ๋‹ค๋ฅธ ํ„ฐ๋ฏธ๋„ ์ฐฝ์—์„œ gatsby-cli๋ฅผ ์—…๋ฐ์ดํŠธํ–ˆ์„ ๋•Œ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ํ”„๋กœ์ ํŠธ์—์„œ gatsby clean ์„ (๋ฅผ) ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

https://github.com/gatsbyjs/gatsby/issues/6385#issuecomment -531949380์—์„œ-์ด ๋ฌธ์ œ๋„๋ณด๊ณ  ์žˆ์ง€๋งŒ gatsby clean ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. CLI ์ถœ๋ ฅ๋ฌผ์ด ๋ฉˆ์ถ˜ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š”๋ฐ, ํ„ฐ๋ฏธ๋„ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๊นŒ ?? ๐Ÿคทโ€โ™‚ ๐Ÿ˜• โ“โ—๏ธ

ํ„ฐ๋ฏธ๋„ ์ฐฝ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค! ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋งค์šฐ ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ํ…Œ์ŠคํŠธํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.์ด ๋ฌธ์ œ๊ฐ€์žˆ๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๋„ ์ด๊ฒƒ์„ ์‹œ๋„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์–ผ๋งˆ๋‚˜ ์ด์ƒํ•œ ๋ฒ„๊ทธ์ด๊ณ  ์ž ์žฌ์ ์œผ๋กœ ์ด์ƒํ•œ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค.

์ €๋Š” ๋˜‘๊ฐ™์€ ๋ฌธ์ œ์— ์ง๋ฉดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. gatsby๋Š” "์†Œ์Šค ๋ฐ ๋ณ€ํ™˜ ๋…ธ๋“œ"๋˜๋Š” "createPagesStatefully"์— ์ž์ฃผ ๊ฐ‡ํ˜€ ์žˆ๊ณ  ์ €๋Š” ์†Œ์Šค ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜์ง€ _ ์•Š์Šต๋‹ˆ๋‹ค _. ๋‚˜๋Š” ์ตœ๊ทผ์—์•ผ "๋‹จ๋ง๊ธฐ ์ฐฝ ํฌ๊ธฐ ์กฐ์ •"์ˆ˜์ •์„ ๋งŒ๋‚ฌ๊ณ  ์ด๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์ˆ˜์ •๋˜๋Š”์ง€์— ๋Œ€ํ•ด 140 % ๋‹นํ™ฉ ์Šค๋Ÿฌ์› ์ง€๋งŒ ๊ทธ๋ ‡๊ฒŒํ•œ๋‹ค. ์ด๊ฒƒ์€ ๋งค์šฐ ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค!

@JaKXz- ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์ด๊ฒƒ์€ ๋‚˜๋ฅผ ๋ฏธ์น˜๊ฒŒ ๋งŒ๋“ค์—ˆ๋‹ค. ์ˆ˜์ • ์‚ฌํ•ญ์€ VS Code์—์„œ ํ„ฐ๋ฏธ๋„ ์ฐฝ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์•ฝ๊ฐ„ ์œ„๋‚˜ ์•„๋ž˜๋กœ ๋“œ๋ž˜๊ทธํ•˜๋ฉด ๊ฐœ๋ฐœ ์ž‘์—…์ด ํ–‰๋ณตํ•˜๊ฒŒ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” yarn๊ณผ npm, workspaces์™€ ์•„๋‹Œ ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ๊ฒฝ์šฐ์—์„œ ํ…Œ์ŠคํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋ฅผ ์œ„ํ•ด ๋ชจ๋“  ๊ฒฝ์šฐ์—์„œ ์ผํ•˜๋Š” ๊ฒƒ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋™๊ฒฐ ๋˜๋Š”์—์„œ ๊ฑธ์–ด ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค createPagesStatefully ๋ณด๋‹ค ๋” ์ž์ฃผ source and transform nodes ์ง€๊ธˆ ๋‚˜๋ฅผ ์œ„ํ•ด. ์ง€๊ธˆ์€ ๋ฌธ์ œ๋ฅผ ์—ด์–ด ๋‘๊ฒ ์Šต๋‹ˆ๋‹ค.์ด ๋ฌธ์ œ๋Š” ์ €๋ณด๋‹ค ๋” ๋งŽ์€ ์ง€์‹์„ ๊ฐ€์ง„ ์‚ฌ๋žŒ์ด ๋œ "ํ•ดํ‚ค"๋ฐฉ์‹์œผ๋กœ ํ•ด๊ฒฐํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

@ehowey ๋‚˜๋Š” ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ๊ณ  vscode์—์„œ ํ„ฐ๋ฏธ๋„ ์ฐฝ์„ ์ด๋™ํ•˜๋ฉด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค (๋‚ด๊ฐ€ ์‹œ๋„ํ•˜๊ธฐ ์ „๊นŒ์ง€์ด ๋ฌธ์ œ๋ฅผ ์ฝ์„ ๋•Œ ๋ฏฟ์„ ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค).
VS Code์—์„œ๋งŒ ๋ฐœ์ƒํ•˜๋Š”์ง€ ์•„์‹ญ๋‹ˆ๊นŒ?

iTerm 2 ์—์„œ์ด ๋ฌธ์ œ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ VS ์ฝ”๋“œ์™€ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค.

๋‚ด ๋ฌธ์ œ๋Š” iTerm 2์—๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Webstorm ํ„ฐ๋ฏธ๋„, Mac ํ„ฐ๋ฏธ๋„, iTerm

ํฌ๊ธฐ ์กฐ์ • ํ„ฐ๋ฏธ๋„ ์ˆ˜์ •์ด ๋‹ค๋ฅธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ๋ชจ๋‘๋ฅผ ์œ„ํ•ด ์ž‘๋™ ํ–ˆ์Šต๋‹ˆ๊นŒ?

๊ฒฐ๊ตญ ํ„ฐ๋ฏธ๋„ ํฌ๊ธฐ ์กฐ์ •์€ iTerm ๋ฐ VSCode์—์„œ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค (iTerm์—์„œ ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๋ช‡ ๋ฒˆ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค)

ํฌ๊ธฐ ์กฐ์ • ํ„ฐ๋ฏธ๋„ ํŠธ๋ฆญ์€ iTerm 2์—์„œ ์•ˆ์ •์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋„ค, iTerm 2 ํฌ๊ธฐ ์กฐ์ •์ด ์™„๋ฒฝํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

ํฌ๊ธฐ ์กฐ์ •์ด ์ž‘๋™ํ•˜๋ฉด์ด ๋ฒ„๊ทธ๊ฐ€ ๋ฒ„ํผ์™€ โ€‹โ€‹๊ด€๋ จ๋œ ๊ฒƒ์œผ๋กœ ์˜์‹ฌ๋˜๋ฉฐ ์–ด๋”˜๊ฐ€์— stdout ํ”Œ๋Ÿฌ์‹œ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฐ ์ข…๋ฅ˜์˜ ์ปค๋„ + ์‰˜ ๊ด€๋ จ ๋ฌธ์ œ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๋…ธ๋“œ๊ฐ€ ์ปค๋„ ๋ฐ / ๋˜๋Š” ์…ธ๊ณผ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐฉ์‹ ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” Linux ๋˜๋Š” Windows๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ๋ณต์ œ ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์•Œ๋ ค์ง„ ๋ฌธ์ œ๋ฅผ ์ฐพ์„ ์ˆ˜์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ a) Gatsby ๊ณ ์œ ์˜ ์ฝ”๋“œ ํŒจํ„ด๊ณผ ์‹œ์Šคํ…œ๊ณผ์˜ ์ƒํ˜ธ ์ž‘์šฉ์˜ ์กฐํ•ฉ์ด๊ฑฐ๋‚˜ b) ์•„์ง ๋ฌผ์–ด๋ณผ ์˜ฌ๋ฐ”๋ฅธ ์งˆ๋ฌธ์„ ๋ชจ๋ฆ…๋‹ˆ๋‹ค.

ํ„ฐ๋ฏธ๋„ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•˜์—ฌ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๋ฉด ๋…ธ๋“œ์™€ kqueue ์‚ฌ์ด์— ๊ฒฐํ•จ์ด ๋ฐœ์ƒํ•˜์—ฌ ์ด๋ฒคํŠธ ๋ฃจํ”„์—์„œ ๋ธ”๋ก์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ„ฐ๋ฏธ๋„์˜ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•˜๋ฉด ํ”„๋กœ์„ธ์Šค์— SIGWINCH ์‹ ํ˜ธ๊ฐ€ ์ „์†ก๋˜์–ด ์ด๋ฒคํŠธ ๋ฃจํ”„๊ฐ€ ์ค‘๋‹จ๋˜๊ณ ์ด๋ฅผ ํ•ด์ œํ•˜๊ณ  ๊ณ„์†ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹คํ–‰์ค‘์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉˆ์ถœ ๋•Œ kill -SIGWINCH ${pid} ์‹คํ–‰ ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ํ„ฐ๋ฏธ๋„ ํฌ๊ธฐ ์กฐ์ •๊ณผ ๋™์ผํ•˜๊ฒŒ ์ž‘๋™ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋˜ํ•œ ์ด๊ฒƒ์ด ๋ชจ๋“  ์‰˜์—์„œ ๋ฐœ์ƒํ•˜๋Š”์ง€ ์—ฌ๋ถ€์— ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€์˜ ์ •๋ณด์— ๋”ฐ๋ฅด๋ฉด bash ๋ฐ zsh ์—์„œ ์‹คํŒจํ–ˆ์œผ๋ฉฐ ์ด๋Š” ์•„๋งˆ๋„ ๋ชจ๋“  ํ„ฐ๋ฏธ๋„ ์—๋ฎฌ๋ ˆ์ดํ„ฐ ๊ฐ„์˜ ๊ณตํ†ต ์š”์ธ ์ค‘ ํ•˜๋‚˜ ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. sh , csh , ksh , tcsh ๋“ฑ ์ค‘ ํ•˜๋‚˜ ์ด์ƒ์„ ์‹œ๋„ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋ชจ๋“  ์…ธ์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ปค๋„์ด ๋…ธ๋“œ์˜ ์ด๋ฒคํŠธ ๋ฃจํ”„๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๊ฐ„ํ—์  ์ธ ๋ฌธ์ œ์ธ ์ด์œ ์ด๊ธฐ๋„ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ถ€ ํ•จ์ˆ˜๊ฐ€ ํ”„๋กœ์„ธ์„œ ์‹œ๊ฐ„์„ ์ค„์ด๋ฉด (๊ฐ€๋ณ€ ์‹œ์Šคํ…œ๋กœ๋“œ๋กœ ์ธํ•ด) ๋„ˆ๋ฌด ์˜ค๋ž˜ ์ฐจ๋‹จ ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ปค๋„์ด ์–ด๋”˜๊ฐ€์—์„œ ์ด๋ฒคํŠธ ๋…ธ๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜์—ฌ ๊ต์ฐฉ ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” api์˜ ๋‚ด๋ถ€์— ์ต์ˆ™ํ•˜์ง€ ์•Š์ง€๋งŒ source and transform nodes ์€ ์ƒ๋‹นํžˆ ํŒŒ์ผ ์‹œ์Šคํ…œ IO ์ง‘์•ฝ์ ์ด๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์•„๋งˆ๋„ ๋งŽ์€ ์˜คํ”„ ๋กœ๋”ฉ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋ฏ€๋กœ ๋ˆ„๊ฐ€ ๋‚ฎ์€ ์ˆ˜์ค€์—์„œ ์‹ค์ œ๋กœ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฒ„๊ทธ์˜ ํ‘œ๋ฉด์ ์„ ์ขํžˆ๋Š” ๊ฒƒ์ด ์ข‹์€ ์ƒ๊ฐ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. source and transform nodes ์—์„œ ๊ฐ€์žฅ ์ž์ฃผ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋ชจ์–‘์ด๋˜๋ฏ€๋กœ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์ฐจ๋‹จํ•˜๋Š” ๋ฒ”์œ„๋กœ ์ขํ˜€๋ณด์„ธ์š”. node_modules/gatsby/dist/utils/api-runner-node.js ๋‹ค์Œ ์ค„์„ ์ถ”๊ฐ€ํ•ด๋ณด์„ธ์š”.

+ 347       if (api === `sourceNodes`) {
+ 348         debugger;
+ 349       }
  350       resolve(runAPI(plugin, api, Object.assign({}, args, {
  351         parentSpan: apiSpan
  352       })));

๊ทธ๋Ÿฐ ๋‹ค์Œ node inspect node_modules/.bin/gatsby develop ํ•ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ๋ช…์ค‘ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ทธ๊ฒƒ์€ ์ฆ‰์‹œ ์‹œ์ž‘์œผ๋กœ ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค c ๋‹น์‹ ์ด์— ๋„์ฐฉํ•˜๋ฉด debug> ํ”„๋กฌํ”„ํŠธ๋ฅผ ๋Œ€๊ธฐ๊ฐ€ ๊ณ„์†ํ•ฉ๋‹ˆ๋‹ค. debugger ์ค„์—์„œ ๋Š์–ด์ง€๋ฉด exec console.log(plugin) ์“ฐ๊ณ  resolve ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ณ„์†ํ•˜๋ ค๋ฉด c ๋ฅผ ๋ˆ„๋ฅด์‹ญ์‹œ์˜ค. ๊ทธ๋ƒฅ์ด ์ •์ง€ํ•˜๋ฉด ... ํ•  ๋•Œ๊นŒ์ง€ ์ปดํ“จํ„ฐ๊ฐ€์ด ์ž‘์—…์„ ์ˆ˜ํ–‰.

์ด๋ฒคํŠธ ๋ฃจํ”„์˜ ํŠน์„ฑ ๋•Œ๋ฌธ์— ๋””๋ฒ„๊น… ์ค‘์—๋„ ๋ฉˆ์ถ”์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ธํ„ฐ๋ŸฝํŠธ๋Š” ์•„๋งˆ๋„ ๊ทธ๊ฒƒ์„ ์ถ”์ ํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋น„๋™๊ธฐ ๋ฒ„๊ทธ๋Š” ์ถ”์ ํ•˜๊ธฐ๊ฐ€ ์ •๋ง ํž˜๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋””๋ฒ„๊ฑฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋™์•ˆ ์ค‘๋‹จ๋˜์ง€ ์•Š์œผ๋ฉด debugger ์ค„์„ ๋‹ค์Œ์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

reporter.log(plugin.resolve);

๋ฐ”๋ผ๊ฑด๋Œ€ ๊ทธ๊ฒƒ์€ ๋ญ”๊ฐ€๋ฅผ ๋“œ๋Ÿฌ ๋‚ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ด๋–ค ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์ฐจ๋‹จ์„ ์ผ์œผํ‚ค๋Š” ์ง€ ๋ณด๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๊ทธ๊ฒƒ์„ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค๋ฉด, ์ด๊ฒƒ์„ ๋ถ„๋ฅ˜ํ•˜๊ธฐ ์œ„ํ•ด ์ตœ์ ํ™” / ๋ฆฌํŒฉํ† ๋ง๋˜์–ด์•ผํ•˜๋Š” ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋‚ผ ์ˆ˜์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํฌ๊ธฐ ์กฐ์ •๋„ ๋‚˜์—๊ฒŒ๋„ ํšจ๊ณผ๊ฐ€ ์žˆ์œผ๋ฉฐ zsh๋ฅผ VSCode ์…ธ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

@ Js-Brecht-์ž์„ธํ•œ ๋‹ต๋ณ€์— ์‹œ๊ฐ„์„ ๋‚ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. kill -SIGWINCH ${pid} ์ •ํ™•ํžˆ ์–ด๋””์— ์ž…๋ ฅํ•ด์•ผํ•˜๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋นŒ๋“œ ๊ณผ์ •์—์„œ ํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

๋””๋ฒ„๊ฑฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ ์ฝ”๋“œ๊ฐ€ ๋‚˜์™”์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์‹ค์ œ๋กœ ๋””๋ฒ„๊ฑฐ์— ๊ฐ‡ํ˜€ ์žˆ์—ˆ์ง€๋งŒ .exit ์—ฌ์ „ํžˆ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.

โ ‹ source and transform nodes
break in /Users/erichowey/Coding/gatsby-catalyst/node_modules/gatsby/dist/utils/api-runner-node.js:365
 363       return new Promise(resolve => {
 364         if (api === `sourceNodes`) {
>365           debugger;
 366         }
 367         resolve(

< {
<   resolve: '/Users/erichowey/Coding/gatsby-catalyst/node_modules/gatsby/dist/internal-plugins/internal-data-bridge',
<   id: 'a5079d69-ba80-53dc-82f9-0f440bd5448c',
<   name: 'internal-data-bridge',
<   version: '1.0.0',
<   pluginOptions: { plugins: [] },
<   nodeAPIs: [ 'sourceNodes', 'onCreatePage' ],
<   browserAPIs: [],
<   ssrAPIs: []
< }
< โ ‹ source and transform nodes
debug> undefined
debug> c
break in /Users/erichowey/Coding/gatsby-catalyst/node_modules/gatsby/dist/utils/api-runner-node.js:365
 363       return new Promise(resolve => {
 364         if (api === `sourceNodes`) {
>365           debugger;
 366         }
 367         resolve(
โ ฆ source and transform nodes
break in /Users/erichowey/Coding/gatsby-catalyst/node_modules/gatsby/dist/utils/api-runner-node.js:365
 363       return new Promise(resolve => {
 364         if (api === `sourceNodes`) {
>365           debugger;
 366         }
 367         resolve(
{
<   resolve: '/Users/erichowey/Coding/gatsby-catalyst/node_modules/gatsby-plugin-mdx',
<   id: '479d2e25-5a33-5a59-a290-cf1877d39ee5',
<   name: 'gatsby-plugin-mdx',
<   version: '1.0.43',
<   pluginOptions: {
<     plugins: [ [Object] ],
<     extensions: [ '.md', '.mdx' ],
<     defaultLayouts: {
<       default: '/Users/erichowey/Coding/gatsby-catalyst/themes/gatsby-theme-catalyst-core/src/components/layout.js'
<     },
<     gatsbyRemarkPlugins: [ [Object], [Object], [Object] ],
<     remarkPlugins: [ [Function: slug] ]
<   },
<   nodeAPIs: [
<     'sourceNodes',
<     'onCreateNode',
<     'onCreatePage',
<     'onCreateWebpackConfig',
<     'resolvableExtensions',
<     'preprocessSource',
<     'onCreateBabelConfig',
<     'onPreBootstrap',
<     'onPostBootstrap'
<   ],
<   browserAPIs: [ 'wrapRootElement' ],
<   ssrAPIs: [ 'wrapRootElement' ],
<   pluginFilepath: '/Users/erichowey/Coding/gatsby-catalyst/node_modules/gatsby-plugin-mdx'
< }
< โ ฆ source and transform nodes
debug> undefined
{
<   resolve: '/Users/erichowey/Coding/gatsby-catalyst/node_modules/gatsby-plugin-mdx',
<   id: '479d2e25-5a33-5a59-a290-cf1877d39ee5',
<   name: 'gatsby-plugin-mdx',
<   version: '1.0.43',
<   pluginOptions: {
<     plugins: [ [Object] ],
<     extensions: [ '.md', '.mdx' ],
<     defaultLayouts: {
<       default: '/Users/erichowey/Coding/gatsby-catalyst/themes/gatsby-theme-catalyst-core/src/components/layout.js'
<     },
<     gatsbyRemarkPlugins: [ [Object], [Object], [Object] ],
<     remarkPlugins: [ [Function: slug] ]
<   },
<   nodeAPIs: [
<     'sourceNodes',
<     'onCreateNode',
<     'onCreatePage',
<     'onCreateWebpackConfig',
<     'resolvableExtensions',
<     'preprocessSource',
<     'onCreateBabelConfig',
<     'onPreBootstrap',
<     'onPostBootstrap'
<   ],
<   browserAPIs: [ 'wrapRootElement' ],
<   ssrAPIs: [ 'wrapRootElement' ],
<   pluginFilepath: '/Users/erichowey/Coding/gatsby-catalyst/node_modules/gatsby-plugin-mdx'
< }
< โ ฆ source and transform nodes
debug> undefined
debug> c
break in /Users/erichowey/Coding/gatsby-catalyst/node_modules/gatsby/dist/utils/api-runner-node.js:365
 363       return new Promise(resolve => {
 364         if (api === `sourceNodes`) {
>365           debugger;
 366         }
 367         resolve(
{
<   resolve: '/Users/erichowey/Coding/gatsby-catalyst/node_modules/gatsby-transformer-sharp',
<   id: '822bdf7b-a95a-5885-9351-158705910ac3',
<   name: 'gatsby-transformer-sharp',
<   version: '2.2.16',
<   pluginOptions: { plugins: [] },
<   nodeAPIs: [
<     'onCreateNode',
<     'setFieldsOnGraphQLNodeType',
<     'onPreExtractQueries',
<     'sourceNodes'
<   ],
<   browserAPIs: [],
<   ssrAPIs: [],
<   pluginFilepath: '/Users/erichowey/Coding/gatsby-catalyst/node_modules/gatsby-transformer-sharp'
< }
โ ‹ source and transform nodes
break in /Users/erichowey/Coding/gatsby-catalyst/node_modules/gatsby/dist/utils/api-runner-node.js:365
 363       return new Promise(resolve => {
 364         if (api === `sourceNodes`) {
>365           debugger;
 366         }
 367         resolve(

< {
<   resolve: '/Users/erichowey/Coding/gatsby-catalyst/node_modules/gatsby/dist/internal-plugins/internal-data-bridge',
<   id: 'a5079d69-ba80-53dc-82f9-0f440bd5448c',
<   name: 'internal-data-bridge',
<   version: '1.0.0',
<   pluginOptions: { plugins: [] },
<   nodeAPIs: [ 'sourceNodes', 'onCreatePage' ],
<   browserAPIs: [],
<   ssrAPIs: []
< }
< โ ‹ source and transform nodes
debug> undefined
debug> c
break in /Users/erichowey/Coding/gatsby-catalyst/node_modules/gatsby/dist/utils/api-runner-node.js:365
 363       return new Promise(resolve => {
 364         if (api === `sourceNodes`) {
>365           debugger;
 366         }
 367         resolve(
{
<   resolve: '/Users/erichowey/Coding/gatsby-catalyst/node_modules/gatsby-source-filesystem',
<   id: '339022db-842c-55bd-8e87-d84bd74a175a',
<   name: 'gatsby-source-filesystem',
<   version: '2.1.26',
<   pluginOptions: { plugins: [], name: 'src', path: 'src/' },
<   nodeAPIs: [ 'sourceNodes', 'setFieldsOnGraphQLNodeType' ],
<   browserAPIs: [],
<   ssrAPIs: [],
<   pluginFilepath: '/Users/erichowey/Coding/gatsby-catalyst/node_modules/gatsby-source-filesystem'
< }
< โ ‹ source and transform nodes
debug> undefined
โ น source and transform nodes
debug> exec console.log(plugin)
c
c

ํ„ฐ๋ฏธ๋„์„ ์‚ฌ์šฉํ•˜๋Š” macOS Sierra์˜ ํฌ๊ธฐ ์กฐ์ •์ด ์ €์—๊ฒŒ ํšจ๊ณผ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

@ehowey ๋‚ด๊ฐ€ ๋‹น์‹ ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ธฐ ๋•Œ๋ฌธ์— ๋””๋ฒ„๊ฑฐ์—์žˆ๋Š” ๋™์•ˆ ์ค‘๋‹จ ๋˜์—ˆ์Šต๋‹ˆ๊นŒ? ์ด ๊ฒฝ์šฐ gatsby-source-filesystem ๊ฐ€ ๋ฒ”์ธ ์ธ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ํŠนํžˆ ๊ธฐ์กด์˜ ๊ด€๋ จ ๊ฐœ์ธ ๋น„ ๋ฌธ์ œ๋กœ ์ธํ•ด ๋ง์ด๋ฉ๋‹ˆ๋‹ค.

ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ํ…Œ์ŠคํŠธ ์‹คํ–‰์„ ์ฒ˜๋ฆฌ ํ•  ์ˆ˜ โ€‹โ€‹์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋™์•ˆ ์ค‘๋‹จ๋˜๋ฉด ์‹คํŒจํ•œ ๋ถ€๋ถ„์„ ์‰ฝ๊ฒŒ ํ™•์ธํ•  ์ˆ˜์žˆ๋Š” ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ... ์ œ๊ฐ€ MacOS๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋ถ€ / ๋””๋ฒ„๊น…์„ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ €์—๊ฒŒ๋Š” ์–ด๋ ค์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฉ”์ธ ๊ฐœ์ธ ๋น„ ์ €์žฅ์†Œ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  gatsby-source-filesystem ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

> git clone [email protected]:gatsbyjs/gatsby.git gatsby-js
> cd gatsby-js
> yarn bootstrap
> yarn jest -- -i './packages/gatsby-source-filesystem/src'

๋˜ํ•œ ์ตœ์†Œ ๋ณต์ œ ์ €์žฅ์†Œ๋กœ์ด ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? gatsby-plugin-mdx ๊ฐ€ ๋‘ ๋ฒˆ ์‹คํ–‰๋˜์—ˆ์œผ๋ฏ€๋กœ ๋ฒ ์–ด ๋ณธ ์ €์žฅ์†Œ๊ฐ€ ์•„๋‹˜์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์™„๋ฒฝํ•œ ์„ธ์ƒ์—์„œ๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์ง€๋งŒ ๊ฐ€๋Šฅํ•œ ํ•œ ๊ฐ„๋‹จํ•œ ์„ค์ •์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚ซ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ตœ์†Œํ•œ์˜ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋กœ ์•ˆ์ •์ ์œผ๋กœ ์‹คํŒจ ํ•  ์ˆ˜์—†๋Š” ๊ฒฝ์šฐ ๊ฐ€์žฅ ์ผ๊ด€๋˜๊ฒŒ ์‹คํŒจํ•˜๋Š” ํ•ญ๋ชฉ์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค (๋™์ผํ•œ ์žฅ์†Œ์—์„œ ๋งค๋ฒˆ (๋˜๋Š” ๊ฐ€๊นŒ์ด์—))

image

๐Ÿ˜‰


kill -SIGWINCH ${pid} ๋Š” ๋‹ค๋ฅธ ์…ธ ์ธ์Šคํ„ด์Šค์—์„œ ์‹คํ–‰ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๋นŒ๋“œ๊ฐ€ ์ค‘๋‹จ๋˜๋ฉด ๋‹ค๋ฅธ ํ„ฐ๋ฏธ๋„ ์ฐฝ / ํƒญ์„ ์—ด๊ณ  ๊ฑฐ๊ธฐ์—์„œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค. ์ด ์ž‘์€ ์Šค ๋‹ˆํŽซ ์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

pid=$(ps -ef |grep -E 'node.*index\.js develop' |awk '{ print $2 }').
kill -SIGWINCH $pid

# Can also be run like this
kill -SIGWINCH $(ps -ef |grep -E 'node.*index\.js develop' |awk '{ print $2 }')

์˜ค๋ฅ˜๊ฐ€ ์žˆ์œผ๋ฉด ๋ช…๋ น์„ ๋ณ„๋„๋กœ ์‹คํ–‰ ํ•ด๋ณด์‹ญ์‹œ์˜ค.

# Run first
ps -ef grep -E 'node.*index\.js develop'
# Example output
     UID     PID    PPID  TTY        STIME COMMAND
********   39928       1 cons0    06:47:38 /path/to/node /path/to/gatsby-cli/lib/index.js develop
# Second column is the pid you want
kill -SIGWINCH 39928

ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ ํ•œ ํ›„ ๋นˆ์†์œผ๋กœ ๋‚˜์˜ค๋ฉด ์ฝ”์–ด ๋คํ”„๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์œ ์šฉ ํ•  ๊ฒƒ์ด๋ฏ€๋กœ ์Šคํƒ ์ถ”์ ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ•œ ๋ฒˆ์— ํ•œ ๋‹จ๊ณ„ ์”ฉ.

@ Js-Brecht ์‘๋‹ต์ด ๋Š๋ ค์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค ... ์ด๊ฒƒ์€ ์ •๋ง ์ €๋…์— ์—ฌ๊ฐ€ ์‹œ๊ฐ„์—ํ•˜๋Š” ์ทจ๋ฏธ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๋‚˜๋Š” gatsby hello world ์Šคํƒ€ํ„ฐ ๋‚ด๋ถ€์—์„œ ๋˜‘๊ฐ™์€ ๊ฒƒ์„ ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋˜ ํ”„๋กœ์ ํŠธ์˜ ์ฃผ ์ž‘์—… ๊ณต๊ฐ„์—์„œ ์ „์— ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด์ „์— ๊ทธ๊ฒƒ์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ณต์ œ ํ–ˆ์œผ๋ฏ€๋กœ ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ๊ด€๋ จ์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ๊ฐœ์ธ ๋น„์˜ ํ•ต์‹ฌ์—์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์†Œ์Šค ๋ฐ ๋ณ€ํ™˜ ๋…ธ๋“œ์— ๋งค๋‹ฌ๋ ค ๋‹ค์Œ ์ถœ๋ ฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

< success onPreBootstrap - 0.102 s
โ ‹ source and transform nodes
break in node_modules/gatsby/dist/utils/api-runner-node.js:362
 360       return new Promise(resolve => {
 361         if (api === `sourceNodes`) {
>362           debugger
 363         }
 364         resolve(

< {
<   resolve: '/Users/erichowey/Coding/my-hello-world-starter/node_modules/gatsby/dist/internal-plugins/internal-data-bridge',
<   id: 'a5079d69-ba80-53dc-82f9-0f440bd5448c',
<   name: 'internal-data-bridge',
<   version: '1.0.0',
<   pluginOptions: { plugins: [] },
<   nodeAPIs: [ 'sourceNodes', 'onCreatePage' ],
<   browserAPIs: [],
<   ssrAPIs: []
< }
< โ ‹ source and transform nodes
debug> undefined

< success source and transform nodes - 25.137 s

๋‹ค์Œ์€ ๋„์›€์ด๋˜๋Š” ๊ฒฝ์šฐ์— ๋Œ€๋น„ ํ•œ gatsby info ๋ช…๋ น์˜ ๋คํ”„์ž…๋‹ˆ๋‹ค.

  System:
    OS: macOS High Sierra 10.13.6
    CPU: (2) x64 Intel(R) Core(TM)2 Duo CPU     P8600  @ 2.40GHz
    Shell: 3.2.57 - /bin/bash
  Binaries:
    Node: 12.9.1 - /usr/local/bin/node
    Yarn: 1.17.3 - /usr/local/bin/yarn
    npm: 6.10.3 - /usr/local/bin/npm
  Languages:
    Python: 2.7.10 - /usr/bin/python
  Browsers:
    Chrome: 76.0.3809.132
    Firefox: 67.0.2
    Safari: 13.0.1
  npmPackages:
    gatsby: ^2.15.22 => 2.15.22 
  npmGlobalPackages:
    gatsby-cli: 2.7.47

์ฐธ๊ณ ๋กœ ๋””๋ฒ„๊ทธ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋ฉด ์†Œ์Šค ๋ฐ ๋ณ€ํ™˜ ๋…ธ๋“œ์—์„œ ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ gatsby develop์„ ์‚ฌ์šฉํ•  ๋•Œ ๋Œ€๋ถ€๋ถ„์€ ๋‚˜๋ฅผ ์œ„ํ•ด createPagesStatefully์— ๋งค๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค. ์ •๋ง ์ด์ƒํ•œ ์ผ์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ๋ฏธ์•ˆํ•ฉ๋‹ˆ๋‹ค. ์†”์งํžˆ ๋งํ•ด์„œ ๋‹น์‹ ์˜ ์ผ์—์„œ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์ผ์ด ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ„ฐ๋ฏธ๋„ ์ฐฝ ํฌ๊ธฐ ์กฐ์ • ํŠธ๋ฆญ์€ ๋‚˜์™€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋งค๋ฒˆ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ํ•ดํ‚ค ํ”ฝ์Šค์ด์ง€๋งŒ ๋งŽ์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์•„์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ฒ”๋žŒ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์—ฌ๊ธฐ์—์„œ๋„ ์ผ์–ด๋‚˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. _resize the terminal_ ํŠธ๋ฆญ์€ ๊ทธ๊ฒƒ์„ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ๋งค์šฐ ์ด์ƒํ•ฉ๋‹ˆ๋‹ค!

+1 iTerm2์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์ง€๋งŒ ํ„ฐ๋ฏธ๋„์—์„œ๋Š” ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค ๐Ÿคทโ€โ™‚๏ธ

@ehowey ๋นŒ๋“œ ์ค‘์— ๋ฐœ์ƒํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์ž‘์—…์€ ํ•˜๋‚˜ ๋˜๋Š” ๋‹ค๋ฅธ ํ”Œ๋Ÿฌ๊ทธ์ธ์— ์˜ํ•ด ์ •์˜๋ฉ๋‹ˆ๋‹ค. Gatsby๋Š” ์ข…์†์„ฑ์œผ๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ํ•ต์‹ฌ ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ ๊ฐ„์ฃผ ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. Gatsby ์ฝ”์–ด๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์— ์ •์˜ ๋œ ์—”๋“œ ํฌ์ธํŠธ๋ฅผ ์ฐพ๊ณ  ์ฝ”์–ด์— ์ •์˜ ๋œ ์ž‘์—… / ๊ฐ์ฒด๋ฅผ ํฌํ•จํ•˜๋Š” ์ผ๋ จ์˜ ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜๋Š” API๋ฅผ ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ๋„ค, ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ํ•ต์‹ฌ์—์„œ ์ผ์–ด๋‚  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋จผ์ € ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ํ˜ธ์ถœํ•ด์•ผํ•˜๊ณ , ์ด๋Ÿฌํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ API์— ๋Œ€ํ•œ ํŠน์ • ์ปจํ…์ŠคํŠธ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ๋นŒ๋“œ ์ค‘๋‹จ์„ ์ดˆ๋ž˜ํ•˜๋Š” ์ปจํ…์ŠคํŠธ๋ฅผ ํ™•์ธํ•˜๊ณ  ํ”Œ๋Ÿฌ๊ทธ์ธ ์ž์ฒด์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”์ง€๋„ ํ™•์ธํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ผ์ธ์„ ๋ณ€๊ฒฝํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

 360       return new Promise(resolve => {
-361         if (api === `sourceNodes`) {
-362           debugger
-363         }
+364         reporter.log(`${api}\t${plugin.name}`)
 365         resolve(

์ด๊ฒƒ์„ ์‹คํ–‰ํ•˜๊ณ  ์ „์ฒด ์ถœ๋ ฅ์„ ๋ณต์‚ฌ / ๋ถ™์—ฌ ๋„ฃ๊ธฐํ•˜์‹ญ์‹œ์˜ค (์‘๋‹ต์— .txt ํŒŒ์ผ๋กœ ์ฒจ๋ถ€ ํ•  ์ˆ˜๋„ ์žˆ์Œ). ํ›จ์”ฌ ๋” ์žฅํ™ฉ ํ•  ๊ฒƒ์ด๊ณ  ๋งŽ์€ ์ •๋ณด๊ฐ€ ์•„๋งˆ๋„ ๋ถˆํ•„์š” ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๐Ÿคทโ€โ™‚.


๊ทธ๋ ‡๊ฒŒ ํ•œ ํ›„์— ๋…ธ๋“œ์˜ ์Šค๋ ˆ๋“œ ํ’€์„ ๋Š˜๋ฆฌ๋ฉด ์ฐจ์ด๊ฐ€ ์žˆ๋Š”์ง€๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋™์ผํ•˜๊ฑฐ๋‚˜ ์œ ์‚ฌํ•œ ๋ฌธ์ œ๋ฅผ ์–ธ๊ธ‰ํ•˜๋Š” ๋‹ค๋ฅธ ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„ source and transform ์—์„œ ๋ฐœ์ƒํ•˜๋ฉฐ ์ผ๋ถ€๋Š” ๊ทธ ๋‹จ๊ณ„๊ฐ€ ์˜์›ํžˆ ๊ฑธ๋ฆฌ๊ฑฐ๋‚˜ ์™„์ „ํžˆ ์ž ๊ธฐ๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํŒŒ์ผ ์‹œ์Šคํ…œ io์—์„œ ์ผ์ข…์˜ ๊ต์ฐฉ ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋น„๋™๊ธฐ ํŒŒ์ผ ์‹œ์Šคํ…œ ์•ก์„ธ์Šค๋Š” ๋…ธ๋“œ์—์„œ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๋กœ ์˜คํ”„๋กœ๋“œ๋˜๋ฉฐ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋…ธ๋“œ์—๋Š” ์‚ฌ์šฉ์ž ๊ณต๊ฐ„์— ๋Œ€ํ•œ 4 ๊ฐœ์˜ ์Šค๋ ˆ๋“œ ํ’€๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ฑ„์›Œ์ง€๊ณ  ๋” ์ด์ƒ ์˜คํ”„ ๋กœ๋”ฉ์„ ์ˆ˜ํ–‰ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ ์ž‘์—…์€ ๊ธฐ๋ณธ ์ด๋ฒคํŠธ ๋ฃจํ”„์—์„œ ๋Œ€๊ธฐ์—ด์— ์ถ”๊ฐ€๋˜์–ด ์Šค๋ ˆ๋“œ๋ฅผ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์Šค๋ ˆ๋“œ๊ฐ€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ด์งˆ ๋•Œ๊นŒ์ง€ ์ž ์žฌ์ ์œผ๋กœ ์ „์ฒด ํ”„๋กœ๊ทธ๋žจ์„ ์ •์ง€์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Gatsby๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์บ์‹œ๋ฅผ ์œ ์ง€ํ•˜๋ฏ€๋กœ ์–ด๋”˜๊ฐ€์—์„œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๊ณ  ์–ด๋–ค ์ข…๋ฅ˜์˜ ๊ต์ฐฉ ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์Šค๋ ˆ๋“œ๊ฐ€ ๊ณ„์† ์ง„ํ–‰ํ•˜๊ธฐ ์ „์— ์‹œ๊ฐ„ ์ดˆ๊ณผ / ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ˆ˜์‹ญ ๊ฐœ (๋˜๋Š” ์ˆ˜๋ฐฑ ๊ฐœ) ํŒŒ์ผ ์‹œ์Šคํ…œ ์•ก์„ธ์Šค ์ด๋ฒคํŠธ์˜ ๊ฒฝ์šฐ ๋ชจ๋‘ ๋™์ผํ•œ ์‹œ๊ฐ„ ์ดˆ๊ณผ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋ฉฐ ๋ชจ๋“  ๊ฒƒ์ด ์Œ“์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ๋‹ค์†Œ ๋น ๋ฅด๊ฒŒ ์ฆ๊ฐ€ ํ•  ์ˆ˜ ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ’€ ํฌ๊ธฐ๋ฅผ ๋Š˜๋ฆฌ๋ฉด ํŠธ๋ž˜ํ”ฝ์˜ ์ผ๋ถ€๋ฅผ ์ค„์ด๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜๋Š” ๋” ๋งŽ์€ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ๐Ÿ˜†.
๋‹ค์Œ ๋ช…๋ น์„ ์‹œ๋„ํ•˜์‹ญ์‹œ์˜ค.

UV_THREADPOOL_SIZE=10 gatsby develop

@ Js-Brecht ์Šค๋ ˆ๋“œ ํ’€ ํฌ๊ธฐ๋ฅผ ๋ณ€๊ฒฝํ•ด๋„ ํฐ ์ฐจ์ด๊ฐ€์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์œ„์—์„œ ์–ธ๊ธ‰ ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์œผ๋กœ ํ‘œ์ค€ gatsby develop ๋ช…๋ น์—์„œ ๋‹ค์Œ ์ถœ๋ ฅ์„ ์–ป์Šต๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ๊ธฐ๋ณธ์ ์ธ hello-world ๊ฐœ์ธ ๋น„ ์Šคํƒ€ํ„ฐ์— ์žˆ์Šต๋‹ˆ๋‹ค.

Erics-MBP:my-hello-world-starter erichowey$ gatsby develop
success open and validate gatsby-configs - 0.050 s
success load plugins - 0.119 s
success onPreInit - 0.036 s
success initialize cache - 0.050 s
success copy gatsby files - 0.281 s
onPreBootstrap  load-babel-config
success onPreBootstrap - 0.131 s
sourceNodes     internal-data-bridge
success source and transform nodes - 0.105 s
success Add explicit types - 0.030 s
success Add inferred types - 0.186 s
success Processing types - 0.145 s
success building schema - 0.535 s
success createPages - 0.032 s
createPagesStatefully   dev-404-page
onCreatePage    internal-data-bridge
onCreatePage    prod-404
createPagesStatefully   gatsby-plugin-page-creator
createPagesStatefully   gatsby-plugin-page-creator
createPagesStatefully   gatsby-plugin-page-creator
createPagesStatefully   gatsby-plugin-page-creator
createPagesStatefully   gatsby-plugin-page-creator
createPagesStatefully   gatsby-plugin-page-creator
onCreatePage    internal-data-bridge
onCreatePage    prod-404
success createPagesStatefully - 9.098 s
success onPreExtractQueries - 0.030 s
success update schema - 0.129 s
success extract queries from components - 0.336 s
success write out requires - 0.057 s
success write out redirect data - 0.044 s
success onPostBootstrap - 0.045 s
โ €
info bootstrap finished - 16.437 s
โ €
success run static queries - 0.038 s
success run page queries - 0.109 s โ€” 2/2 27.65 queries/second
onCreateWebpackConfig   webpack-theme-component-shadowing
onCreateWebpackConfig   webpack-theme-component-shadowing
success start webpack server - 1.506 s โ€” 1/1 4.63 pages/second
 DONE  Compiled successfully in 4699ms

์ด๊ฒƒ์€ createPagesStatefully ์— ๋งค๋‹ฌ๋ฆฐ ์˜ˆ์ž…๋‹ˆ๋‹ค. ํ„ฐ๋ฏธ๋„ ์ฐฝ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•˜์—ฌ ๋นŒ๋“œ๋ฅผ ๊ณ„์†ํ–ˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์‹ ์œผ๋กœ๋“  ๋ฒ”์ธ์ด ๋  ์ˆ˜์žˆ๋Š” ๊ธฐํšŒ๊ฐ€ internal-data-bridge ์ž…๋‹ˆ๊นŒ? ๊ทธ๊ฒƒ์€ ๋‹น์‹ ์ด ์ง€๊ธˆ๊นŒ์ง€ ์‹คํ–‰ํ•˜๋„๋ก ์š”์ฒญํ•œ ๋‘ ๋ช…๋ น์— ๋ชจ๋‘ ํฌํ•จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์–ด๋–ค ์ค„์— ๋งค๋‹ฌ๋ ค ์žˆ๋Š”์ง€ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

createPagesStatefully dev-404-page

dev-404-page ๋ถ€๋ถ„์ด ์•„์ง ์žˆ๋Š”์ง€ 100 % ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ createPagesStatefully ์˜ ์ฒซ ๋ฒˆ์งธ ์ธ์Šคํ„ด์Šค์— ๊ฑธ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌ. ๊ดœ์ฐฎ์œผ ์‹œ๋‹ค๋ฉด ์ง€๊ธˆ ์ข€ ๋” ๋ณ€๊ฒฝ ํ•ด๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ํŒŒ์ผ์—์„œ ํ‘œ์‹œ๋œ ์ค„์„ ์—…๋ฐ์ดํŠธํ•˜์‹ญ์‹œ์˜ค.

node_modules/gatsby/dist/internal-plugins/internal-data-bridge/gatsby-node.js

- 114   chokidar.watch(pathToGatsbyConfig).on(`change`, () => {
+ 114   chokidar.watch(pathToGatsbyConfig, { useFsEvents: false }).on(`change`, () => {

node_modules/gatsby/dist/internal-plugins/dev-404-page/gatsby-node.js

- 30     chokidar.watch(source).on(`change`, () => copy()).on(`ready`, () => done());
+ 30     chokidar.watch(source, { useFsEvents: false }).on(`change`, () => copy()).on(`ready`, () => done());

node_modules/gatsby-page-utils/dist/watch-directory.js

  26               chokidar.watch(glob, {
  27                 cwd: path,
+ 28                 useFsEvents: false,
  29               }).on("add", function (path) {

node_modules/gatsby/dist/utils/get-static-dir.js

- 51   chokidar.watch(staticDir).on(`add`, path => {
+ 51   chokidar.watch(staticDir, { useFsEvents: false }).on(`add`, path => {

node_modules/gatsby/dist/query/query-watcher.js

- 237   watcher = chokidar.watch([slash(path.join(rootDir, `/src/**/*.{js,jsx,ts,tsx}`)), ...packagePaths]).on(`change`, path => {
+ 237   watcher = chokidar.watch([slash(path.join(rootDir, `/src/**/*.{js,jsx,ts,tsx}`)), ...packagePaths], { useFsEvents: false }).on(`change`, path => {

๋‚˜๋Š” ์—ฌ๊ธฐ์—์„œ chokidar ์ž˜๋ชป์ด ์˜์‹ฌ๋ฉ๋‹ˆ๋‹ค. ์•ฝ ํ•œ ๋‹ฌ ์ „์— v3.x๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ๋˜์—ˆ์œผ๋ฉฐ fsevents ์‚ฌ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๊ฑฐ๋‚˜ fsevents ์™€ ๊ด€๋ จํ•˜์—ฌ ์ž˜๋ชป๋œ ๋™์ž‘์„ ์œ ๋ฐœํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” chokidar.watch() ์‚ฌ์šฉํ•  ๋•Œ ๋…ธ๋“œ๊ฐ€ ์ค‘๋‹จ๋˜๋Š” ๋ฌธ์ œ์™€ ์œ ์‚ฌํ•œ ๋ช‡ ๊ฐ€์ง€ ๊ณต๊ฐœ ๋œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. fsevents ๊ฐ€ Mac ํ”„๋กœ์„ธ์Šค์ด๊ธฐ ๋•Œ๋ฌธ์— MacOS๋กœ ์ง€์—ญํ™”๋˜๊ณ  ๋นŒ๋“œ๊ฐ€ ์‚ฌ์šฉ์ค‘์ธ ๋ชจ๋“ˆ ๋˜๋Š” ํŒŒ์ผ์„ ์ž‘์„ฑ / ์ฒ˜๋ฆฌํ•˜๋Š” ๋ชจ๋“ˆ์—์„œ ์‹คํŒจํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์— ์ ํ•ฉ ํ•ด ๋ณด์ž…๋‹ˆ๋‹ค. ๋ณด๊ณ ์žˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.

chokidar.watch() gatsby-source-filesystem chokidar.watch() ์กด์žฌํ•˜๋ฉฐ ๋‹ค๋ฅธ ์ €์žฅ์†Œ @ehowey์—์„œ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค. ๋งํ•  ๊ฒƒ๋„์—†์ด, gatsby-source-filesystem ์€ (๋Š”) ์ตœ์†Œ ์ €์žฅ์†Œ์—์„œ ํ˜ธ์ถœ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ source and transform ์ง€๋‚˜๊ฐ€๋Š” ์ด์œ ๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ด์˜ ์ธ์Šคํ„ด์Šค chokidar ์ „์— internal-data-bridge ,ํ•˜์ง€๋งŒ ๋‚œ ๋นŒ๋“œ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š”๋˜์ง€ ์•Š๋Š” ์œ„์น˜์— ์ƒ๊ฐํ•œ๋‹ค (์˜ˆ : query-watcher ). ๊ทธ๋Ÿฌ๋‚˜ internal-data-bridge ๊ฐ€ ๋””๋ฒ„๊ฑฐ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋™์•ˆ ์ค‘๋‹จ ๋œ ์ด์œ ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ณง๋ฐ”๋กœ ์‹คํ–‰ํ•˜๋ฉด ๋นŒ๋“œ์˜ ํ›„๋ฐ˜ ๋‹จ๊ณ„์— ์˜ํ–ฅ์„ ๋ฏธ์น  ๊ฐ€๋Šฅ์„ฑ์ด ํฝ๋‹ˆ๋‹ค.

์ด๋กœ ์ธํ•ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๋Š”์ง€ ๋˜๋Š” ์ด์ „๋ณด๋‹ค ๋” ๋งŽ์ด ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค. : crossed_fingers :

@ Js-Brecht ๋‹น์‹ ์€ ์–ด๋”˜๊ฐ€์— ์–ป๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค! ๋‚˜๋Š” gatsby develop ์•„๋งˆ 15 ๋ฒˆ ๋‹ฌ๋ ธ๋‹ค. ๊ทธ๊ฒƒ์€์— ๊ฑธ๋ ค ๊ฒฐ์ฝ” source and transform nodes ๋˜๋Š” createPagesStatefully ๊ทธ๋Ÿฌ๋‚˜์—, ์–ด์ฉŒ๋ฉด, 2/10 ์‹œ๊ฐ„์„ ๊ฑธ ๋“ฏ start webpack server . ํฌ๊ธฐ ์กฐ์ • ํ„ฐ๋ฏธ๋„ ํŠธ๋ฆญ๊ณผ ํ•จ๊ป˜์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. start webpack server ์™€ ๊ด€๋ จ๋œ chokidar / fsevents์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋†“์นœ ์ ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋ถ€์ˆ˜์ ์œผ๋กœ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค ๋‹จ๊ณ„๋ฅผ ์ด์ „๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฅด๊ฒŒ ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์˜€์Šต๋‹ˆ๊นŒ?

์ •๋ง ๋“ฃ๊ธฐ ์ข‹์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€๋Ÿฌ chokidar ์ธ์Šคํ„ด์Šค ํ•˜๋‚˜๋ฅผ ๋‚จ๊ฒจ๋‘๊ณ  ๋ถ€ํŠธ ์ŠคํŠธ๋žฉ์„ ์™„๋ฃŒํ•˜๊ณ  ์„œ๋ฒ„๋ฅผ ์‹œ์ž‘ํ•œ ์งํ›„์ž…๋‹ˆ๋‹ค. startServer() ํ•จ์ˆ˜์˜ ๋ ๋ถ€๋ถ„์—์„œ node_modules/gatsby/dist/commands/develop.js startServer() ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ง€๊ธˆ ์ปดํ“จํ„ฐ์— ์žˆ์ง€ ์•Š๋‹ค. ์•„๋‹ˆ๋ฉด ๋‹น์‹ ์—๊ฒŒ ์ฐจ์ด๋ฅผ ์ค„ ๊ฒƒ์ด๋‹ค.

๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ์ •ํ™•ํ•œ ์ค„์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

cat node_modules/gatsby/dist/commands/develop.js |grep -n โ€˜chokidarโ€™

์ด๊ฒƒ์ด ๋ถ€ํŠธ ์ŠคํŠธ๋žฉ์„ ๊ณ ์นœ๋‹ค๋ฉด ์—ฌ์ „ํžˆ ์„œ๋ฒ„์— ๋งค๋‹ฌ๋ ค ์žˆ์–ด์•ผ ํ•  ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์•ˆ์ •์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š”์ง€ ์•Œ๋ ค ์ฃผ์‹œ๋ฉด PR์„ ์ œ์ถœํ•˜๊ณ  ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์•Œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋” ๋นจ๋ฆฌ ์‹คํ–‰๋œ๋‹ค๋Š” ์‚ฌ์‹ค์— ๋†€๋ž์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฒ ์–ด์˜ ๋นŒ๋“œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ํ”„๋กœ์ ํŠธ ์–ด์ฉŒ๋ฉด ๋‘˜์งธ ๋‚  ์†Œ์š”, ๋‚˜๋Š” ๋‹น์‹ ์˜ ๋””๋ฒ„๊ทธ ์ถœ๋ ฅ์˜ ํŠน์ • ๋‹จ๊ณ„์— ๋Œ€ํ•œ ์–ด๋–ค ๋ฏธ์นœ ๊ธด ๋Ÿฐํƒ€์ž„์„ ๋ณด์•˜๋‹ค. fsevents ๋Š” ์†๋„๋ฅผ ๋†’์ด๊ณ  CPU์—์„œ ๋งŽ์€ ๋ถ€ํ•˜๋ฅผ ๋œ์–ด ์ฃผ์ง€๋งŒ, ๋Œ€์‹  ๋ญ”๊ฐ€ ์žฌ๋ฏธ์žˆ๋Š” ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@ Js-Brecht ๋‚ด ๋ชจ์ž๊ฐ€ ๋‹น์‹ ์—๊ฒŒ ๊ฐ„๋‹ค. ๋‚˜๋Š” ๋‹น์‹ ์ด ์–ด๋–ป๊ฒŒ ๊ทธ ํ† ๋ผ๋ฅผ ๋ชจ์ž์—์„œ ๋ฝ‘์•˜๋Š”์ง€ ๋ชจ๋ฅด๊ณ  ๋ฒ„๊ทธ๋Š” ๋ฉ€๋ฆฌ์„œ ๊ทธ๋Ÿฐ ์ด์ƒํ•œ ๊ฒƒ์„ ๊ณ ์ณค์ง€๋งŒ ์ž˜ํ–ˆ์Šต๋‹ˆ๋‹ค! ๋‚˜๋Š” ์ž˜๋ชป๋œ ๊ฒƒ์„ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— diff๊ฐ€ develop.js ๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‹œ๊ฐ„.

์ฐจ์ด์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

node_modules/gatsby/dist/commands/develop.js

- 337   chokidar.watch(watchGlobs).on(`change`, async () => {
+ 337   chokidar.watch(watchGlobs, { useFsEvents: false }).on(`change`, async () => {

์ด ๋ชจ๋“  ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ ํ•ด ์ฃผ์…”์„œ ์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊นŒ๋‹ค๋กœ์šด ์ผ ์ด์—ˆ์ง€๋งŒ MacOS์˜ ๋‚ด๋ถ€๋ฅผ ํŒŒํ—ค์น  ์ˆ˜์žˆ๋Š” ๊ธฐํšŒ์˜€์Šต๋‹ˆ๋‹ค. ์ €๋Š” ํ•ญ์ƒ ์ƒˆ๋กœ์šด ๊ฒƒ์„ ๋ฐฐ์šฐ๋Š” ๊ฒƒ์„ ์ฆ๊น๋‹ˆ๋‹ค. : slightly_smiling_face :

์–ด๋–ป๊ฒŒ ์ง„ํ–‰๋˜๋Š”์ง€ ์•Œ๋ ค์ฃผ์„ธ์š”. ์•„์ง ์ˆฒ์—์„œ ์™„์ „ํžˆ ๋ฒ—์–ด๋‚˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. : sweat_ smile :.

๊ณต์žฅ! ๋ฐฉ๊ธˆ gatsby develop 10 ๋ฒˆ ์ด์ƒ ์‹คํ–‰ํ–ˆ๋Š”๋ฐ ์™„๋ฒฝํ•˜๊ฒŒ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ์กฐ์‚ฌํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”๋ผ๊ฑด๋Œ€ ์ด๊ฒƒ์€ ์ด๊ฒƒ์„ ๊ฒฝํ—˜ํ•˜๋Š” ์šฐ๋ฆฌ ๊ทธ๋ฃน์—๊ฒŒ ๊ฐœ์„ ์ด๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค!

ํฐ! ์ž ์‹œ ํ›„์— ์—ฌ๊ธฐ์— ๋ช‡ ๋ถ„์ด ์žˆ์œผ๋ฉด PR์„ ์ž‘์„ฑํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์™„๋ฃŒ๋˜๋ฉด ๋‚ด repo์—์„œ gatsby-dev-cli ์„ (๋ฅผ) ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํŒจ์น˜๊ฐ€ ๊ฒŒ์‹œ ๋  ๋•Œ๊นŒ์ง€ ์ž‘์—… ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๊ฐ–๊ฒŒ๋ฉ๋‹ˆ๋‹ค ( gatsby-dev-cli ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋„์›€). ๋‚˜๋Š” ์˜ฌ๋ฐ”๋ฅธ OS๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์–ด์จŒ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด ๋‹น์‹ ์„ ๋ชจ์ง‘ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ...์ด ๋ฌธ์ œ๋ฅผ ๊ฒช๊ณ ์žˆ๋Š”์ด ์Šค๋ ˆ๋“œ์˜ ๋‹ค๋ฅธ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

์™„๋ฃŒ๋˜๋ฉด ์—ฌ๊ธฐ์— ๋‹ค์‹œ ๊ฒŒ์‹œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด ์ฆ์ƒ์„ ์ผ์œผํ‚ค๋Š” ๋˜ ๋‹ค๋ฅธ ๋ณ„๋„์˜ ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค-https: //github.com/gatsbyjs/gatsby/issues/17935

๋ˆ„๊ตฌ๋“ ์ง€ LokiJS๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ณ  ํ„ฐ๋ฏธ๋„ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์œผ๋ฉด ๋‚ด๊ฐ€ ์ฐพ์€ ๋ฌธ์ œ ์ผ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.

@ehowey ๋‹˜ , PR # 17938์„ ํ™•์ธํ•˜์„ธ์š”. ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๊ธฐ๊บผ์ด ํ…Œ์ŠคํŠธ๋ฅผํ•œ๋‹ค๋ฉด, PR์— ์ค„์„ ์„œ์‹ญ์‹œ์˜ค.

๋‚ด ์ €์žฅ์†Œ๋ฅผ ์žก์•„์„œ gatsby-dev-cli ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์ดํŠธ์—์„œ gatsby ์†Œ์Šค๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋จผ์ € gatsby-dev-cli

# Use your package manager of choice, and install globally
npm install -g gatsby-dev-cli

๊ทธ๋Ÿฐ ๋‹ค์Œ ์ €์žฅ์†Œ๋ฅผ ๋ณต์ œํ•˜๊ณ  ๋ถ€ํŠธ ์ŠคํŠธ๋žฉํ•˜์‹ญ์‹œ์˜ค.

git clone --single-branch -b macos-fsevents-fix https://github.com/Js-Brecht/gatsby
cd gatsby
yarn bootstrap
# Set the target repo path for gatsby-dev
gatsby-dev -p "${PWD}"

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋Š” ์‚ฌ์ดํŠธ๋กœ ์ด๋™ํ•˜์—ฌ gatsby-dev

# Disable file watching, unless you intend on making changes to the gatsby repo
gatsby-dev --scan-once

์ œ ๊ฒฝ์šฐ์—๋Š” OSX์™€ IntelliJ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • IntelliJ์—์„œ ํ”„๋กœ์ ํŠธ ๋‹ซ๊ธฐ
  • ๋‹ค์‹œ ์‹œ๋„ ( npm start )
  • Intellij์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋‹ค์‹œ ์—ฝ๋‹ˆ ๋‹ค.
    ๋ฌธ์ œ๊ฐ€ IntelliJ ์ธ๋ฑ์‹ฑ ํŒŒ์ผ๊ณผ ๊ด€๋ จ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@steinitz , @rheinardkorf , @ hbthen3rd , @sharvit , @JaKXz , @emilyaviva , @MaximeHeckel

# 17938์„ ํ…Œ์ŠคํŠธ ํ•ด๋ณด์‹ค ๋ถ„ ๊ณ„์‹ ๊ฐ€์š”?

์˜ค๋Š˜ ๋ฐค ์ง‘์—์žˆ์„ ๋•Œ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์— ๋Œ€ํ•œ ๋ชจ๋“  ์ž‘์—…์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!
2019 ๋…„ 10 ์›” 1 ์ผ ์˜ค์ „ 10:23 -0600, Jeremy Albright [email protected] ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

@steinitz , @rheinardkorf , @ hbthen3rd , @sharvit , @JaKXz , @emilyaviva , @MaximeHeckel
# 17938์„ ํ…Œ์ŠคํŠธ ํ•ด๋ณด์‹ค ๋ถ„ ๊ณ„์‹ ๊ฐ€์š”?
โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ๋ณด๊ฑฐ๋‚˜ ๋Œ€ํ™” ๋ชฉ๋ก์„ ์Œ์†Œ๊ฑฐํ•˜์„ธ์š”.

์ด์— ๋Œ€ํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๊นŒ? [Firebase Source] Fetching data for ... ์‹œ๋„ ํ›„ ์†Œ์Šค์—์„œ ๋™๊ฒฐ๋˜๊ณ  ๋‚˜์™€ ๋‚ด ์นœ๊ตฌ๋ฅผ ์œ„ํ•ด ๋…ธ๋“œ๋ฅผ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๋ถˆํ–‰ํžˆ๋„ ํ„ฐ๋ฏธ๋„ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@ rishabhaggarwal2 ํ˜„์žฌ ๊ฒฝํ—˜ํ•˜๊ณ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋“ค๋ฆฌ๋Š” ์œ ์‚ฌํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”๋ฐ, ์˜จ๋ผ์ธ ์†Œ์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋™์•ˆ ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค. GATSBY_CONCURRENT_DOWNLOAD=10 gatsby develop ๋ฅผ ์‚ฌ์šฉํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ด๊ฒƒ๋„ ๋ณธ๋‹ค. Lumen ์‹œ์ž‘์‹œ ๋กœ์ปฌ์—์„œ gatsby develop ์ „ํ˜€ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. createPageStatefully ๋˜๋Š” source and transform nodes ์— ๊ณ„์† ๊ฑธ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค.

macOS Mojave 10.14.6
Gatsby CLI version 2.7.7
Gatsby version 2.14.1

์ด ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌ ํ•œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์€

CHOKIDAR_USEPOLLING=1 gatsby develop

MacOS์—์„œ fsevents ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•ด์•ผํ•˜๋ฏ€๋กœ ์•ˆ์ •์ ์ธ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@ Js-Brecht ์—ฌ๊ธฐ์— ์–ธ๊ธ‰ ๋œ ๋‹ค๋ฅธ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•๋ณด๋‹ค ๋” ์˜๊ตฌ์ ์œผ๋กœ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ณต์œ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

@steinitz ๋‹น์‹ ์€ "๋”"๋ฅผ ์˜๊ตฌ์ ์œผ๋กœ ๋งํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์Šค์œ„์น˜๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์—ฌ์ „ํžˆ ๋ฐœ์ƒํ•œ๋‹ค๊ณ  ๋งํ•˜๋Š” ๊ฑด๊ฐ€์š”?

@ Js-Brecht ์•„๋‹ˆ์š”, ๋ถˆ๋ถ„๋ช…ํ•ด์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‚ด ์ž์‹ ์„ ํฌํ•จํ•œ ๋‹ค๋ฅธ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ํ•œ๋™์•ˆ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์˜€์ง€๋งŒ ๋ฌธ์ œ๊ฐ€ ๋‹ค์‹œ ๋ฐœ์ƒํ–ˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•”์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ ์šฉํ•˜๊ณ  gatsby develop์„ ๋‹ค์‹œ ์‹คํ–‰ํ•˜์—ฌ (๊ท€ํ•˜์˜ ๊ฐœ์„  ์‚ฌํ•ญ๊ณผ ํ•จ๊ป˜) ๋นŒ๋“œ๋ฅผ ๊ณ„์†ํ•ด์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰, ์ด๊ฒƒ์€ ๋กค๋Ÿฌ ์ฝ”์Šคํ„ฐ ํƒ€๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜๋Š” ๊ฐ์ •์ ์œผ๋กœ ์ค€๋น„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค : smile : ๋ฌธ์ œ๊ฐ€ ๋Œ์•„์˜ฌ ์ˆ˜ ์žˆ๋„๋ก.

๋ช…ํ™•ํ•˜๊ฒŒ ๋งํ•˜๋ฉด, ์ง€๊ธˆ๊นŒ์ง€๋Š” ๋„ˆ๋ฌด ์ข‹์Šต๋‹ˆ๋‹ค.

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์—…๋ฐ์ดํŠธ :์ด ๊ธ€์„ ๊ฒŒ์‹œํ•˜๊ธฐ ์ „์— ์ตœ์ข… ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด WebStorm์„ ๋‹ค์‹œ ์‹œ์ž‘ํ–ˆ์œผ๋ฉฐ ์ด์ œ WebStorm ํ„ฐ๋ฏธ๋„์˜ source and transform nodes ์— ๊ฑธ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌ ํ•œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์€

CHOKIDAR_USEPOLLING=1 gatsby develop

MacOS์—์„œ fsevents ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•ด์•ผํ•˜๋ฏ€๋กœ ์•ˆ์ •์ ์ธ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@ Js-Brecht ๋‚˜๋Š” ubutu 18.04๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๊ฐ€๋” ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋‚ด OS์— ๋Œ€ํ•œ ์ œ์•ˆ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์ด ๋ฌธ์ œ์˜ ๊ฐ€๋Šฅํ•œ ์›์ธ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์„ค๋ช… ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

์ด๊ฒƒ์€ @ Js-Brecht์™€ @RomanHotsiy์˜ ๋ถ€์ง€๋Ÿฐํ•œ ์ž‘์—… ๋•๋ถ„์— ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. fsevents์˜ ์—…์ŠคํŠธ๋ฆผ ๋ฌธ์ œ ์˜€๋Š”๋ฐ, ์ œ๊ฐ€ ์Šค์Šค๋กœ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ ์ด์ƒ์œผ๋กœ, ์ด๋Ÿฌํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๊ตฌํ˜„๋˜๊ณ  fsevents์—์„œ gatsby ์ž์ฒด๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋˜๋ฉด ํ–ฅํ›„ ์—…๋ฐ์ดํŠธ์—์„œ ์ˆ˜์ •๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ์‹ ๋ขฐํ•  ์ˆ˜์žˆ๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ํ„ฐ๋ฏธ๋„ ์ฐฝ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ์„ค๋ช… ๋œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ž์ฒด์—์„œ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. https://github.com/gatsbyjs/gatsby/pull/17938 ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค์‹œ ์‹คํ–‰ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. node_modules ํด๋”๋ฅผ ๋ณ€๊ฒฝ ํ•œ ํ›„ ์ˆ˜์ •ํ•˜๊ณ  ํŒจํ‚ค์ง€ ๋ฒ„์ „์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋นˆ๋„์— ๋”ฐ๋ผ ์ž‘์—… ํ•  ๊ฐ€์น˜๊ฐ€ ์—†์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ˆ˜์ • ์‚ฌํ•ญ์ด ๋‹ค์šด ์ŠคํŠธ๋ฆผ์œผ๋กœ ๊ฐœ์ธ ๋น„ ์ž์ฒด๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋  ๋•Œ๊นŒ์ง€ ๋ฌธ์ œ๋ฅผ ์—ด์–ด ๋‘๊ฒ ์Šต๋‹ˆ๋‹ค.

@ Boty22 Ubuntu๋Š” fsevents ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์•„๋งˆ๋„ ๋‹ค๋ฅธ ๊ฒƒ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์›๊ฒฉ ์œ„์น˜์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ ํ•  ๋•Œ ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋™์‹œ์„ฑ ๋ฌธ์ œ ์ˆ˜์ •์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ # 6654 ๋ฐ # 17940์„ ํ™•์ธํ•˜์„ธ์š”.

๋น ๋ฅธ ์งˆ๋ฌธ : ํ„ฐ๋ฏธ๋„ ํฌ๊ธฐ ์กฐ์ •์ด ๋„์›€์ด๋ฉ๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด์ด ๋ฌธ์ œ์™€ ์œ ์‚ฌํ•œ _ ๋ฌด์–ธ๊ฐ€ _ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@ Js-Brecht์˜ ํ„ฐ๋ฏธ๋„ ํฌ๊ธฐ ์กฐ์ •์€ Ubuntu์— ๋„์›€์ด๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ gatsby-source-airtable BTW๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ AirTable ํ…Œ์ด๋ธ”์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒŒ ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์˜๊ฒฌ์„ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋ž˜๋„ ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฉด ์ƒˆ ํ‹ฐ์ผ“์„ ์—ฌ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

@steinitz ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ์˜๊ฒฌ์„ ๋†“์ณค์Šต๋‹ˆ๋‹ค. # 17938์— ์„ค๋ช… ๋œ ์ˆ˜์ •์„ ์‹œ๋„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋ณด๋‹ค ๊ตฌ์ฒด์ ์œผ๋กœ ์—ฌ๊ธฐ ์™€ ์—ฌ๊ธฐ . ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ท€ํ•˜์˜ ๊ฒฝ์šฐ์— ๋” ๋งŽ์€ ์ผ์ด ๋ฐœ์ƒํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์–ธ๊ธ‰ ๋œ ์ดํ›„ CHOKIDAR_USEPOLLING=1 gatsby develop ๋ฌธ์ œ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

@ Js-Brecht ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ฐœ์ธ ๋น„ ๋นŒ๋“œ๋ฅผ ํ•  ๋•Œ 2.15.28์—์„œ๋„ ์ด๊ฒƒ์„๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํ„ฐ๋ฏธ๋„์—์„œ ๊ฐœ์ธ ๋น„ ๊ฐœ๋ฐœ์„ ์ค‘์ง€ํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ? ๊ฐ„ํ—์ ์œผ๋กœ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ ์„œ๋ฒ„๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š๊ณ  ๋‹ค์‹œ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜๋„ ๋ธ”๋กœ๊ทธ ํŠœํ† ๋ฆฌ์–ผ์„ ๋”ฐ๋ผ ๊ฐ„๋‹จํ•œ ๋ธ”๋กœ๊ทธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฑฐ์˜ ๋ชจ๋“  ๋‹ค๋ฅธ ์‹คํ–‰ ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” Mac btw๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@canvaspixels ๋Š” ํ„ฐ๋ฏธ๋„ ์ฐฝ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•˜๋ฉด ๋นŒ๋“œ๊ฐ€ https://github.com/gatsbyjs/gatsby/pull/17938#issuecomment -540661991

@RomanHotsiy ์ •๋ง ๊ทธ๊ฒƒ์„ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค! ๊ฐ์‚ฌ!

์•ˆ๋…•ํ•˜์„ธ์š”, fsevents ์˜ ํŒจ์น˜ ๋ฒ„์ „์ด ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. yarn.lock ํŒŒ์ผ์„ ์‚ญ์ œํ•˜๊ณ  yarn์„ ๋‹ค์‹œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์ข…์†์„ฑ์€ ์ž๋™์œผ๋กœ [email protected] ์„ ์„ ํƒํ•ด์•ผ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

์ฃผ์˜ํ•˜์‹ญ์‹œ์˜ค. yarn.lock ํŒŒ์ผ ์ „์ฒด๋ฅผ ์‚ญ์ œํ•˜๋ฉด ๋‹ค๋ฅธ ํŒจํ‚ค์ง€๋„ ์—…๊ทธ๋ ˆ์ด๋“œ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹น์‹ ์ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋˜ ๋‹ค๋ฅธ, ๋” ์ •ํ™•ํ•œ ์˜ต์…˜ yarn ์— ๊ด€ํ•œ ๋‹จ์ง€ ๋ผ์ธ์„ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค fsevents ์—์„œ yarn.lock ํ•˜๊ณ  ๋‹ค์‹œ ์‹คํ–‰ yarn . ์ด๋กœ ์ธํ•ด ์˜ํ–ฅ์„๋ฐ›๋Š” ํŒจํ‚ค์ง€ ๋งŒ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ ์ค„์„ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค.

- 
- fsevents@^2.0.6:
-   version "2.0.7"
-   resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.0.7.tgz#382c9b443c6cbac4c57187cdda23aa3bf1ccfc2a"
-   integrity sha512-a7YT0SV3RB+DjYcppwVDLtn13UQnmg0SWZS7ezZD0UjnLwXmy8Zm21GMVGLaFGimIqcvyMQaOJBrop8MyOp1kQ==

์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์€ Yarn (https://yarnpkg.com/lang/en/docs/selective-version-resolutions/)์˜ resolutions ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹น์‹ ์— ๋‹ค์Œ์„ ์ถ”๊ฐ€ํ•˜๋ฉด package.json ๋‹ค์Œ ์‹คํ–‰ yarn , ๋˜ํ•œ ์ „์ด ์ข…์†์„ฑ์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ณ  ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค yarn.lock ํŒŒ์ผ์„ :

  "resolutions": {
    "fsevents": "^2.1.1"
  }

์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์ž ๊ธˆ ํŒŒ์ผ์„ ์—…๋ฐ์ดํŠธ ํ•œ ํ›„ package.json ์—์„œ resolutions ์†์„ฑ์„ ๋‹ค์‹œ ์ œ๊ฑฐ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŽธ์ง‘ : ์ด์ „์˜ ์ž˜๋ชป๋œ ๋ฒ„์ „์˜ ์ง€์นจ์„ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค.

yarn upgrade chokidar@latest ์‹คํ–‰ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์–ด๋–ค ๊ฒƒ๋„ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๊ณ  ์˜ฌ๋ฐ”๋ฅธ ๋ฒ„์ „์˜ fsevents๋กœ ์ž ๊ธˆ ํŒŒ์ผ์„ ๋‹ค์‹œ ๋นŒ๋“œํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์•„, ๊ธฐ๋‹ค๋ ค. ๊ทธ๊ฒƒ์€ ๋‹น์‹ ์ด ์ง์ ‘ ์˜์กด์„ฑ์œผ๋กœ chokidar๋ฅผ ๊ฐ€์ง€๊ณ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค ๐Ÿ™„. ์žŠ์–ด ๋ฒ„๋ ธ์Šต๋‹ˆ๋‹ค. @karlhorky ๋งž์•„์š”

npm ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ญ์ œ node_modules ์‹คํ–‰ npm i --save [email protected] ๋‹ค์Œ๊ณผ npm i ๋‚˜๋ฅผ ์œ„ํ•ด ํŠธ๋ฆญ์„ํ–ˆ๋‹ค. ์‹œ์ž‘ํ•˜๋Š” ๋ฐ 19 ์ดˆ๊ฐ€ ๊ฑธ๋ ธ๊ณ  gatsby-lumen-starter ๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

-- ํŽธ์ง‘ํ•˜๋‹ค:

์‹ค์ œ๋กœ ์ž‘์—…์„ ์™„๋ฃŒํ•˜๊ณ  Netlify๋กœ ํ‘ธ์‹œํ–ˆ๋Š”๋ฐ fsevents ( error [email protected]: The platform 'linux' is incompatible with this module ) ๋•Œ๋ฌธ์— ์™„์ „ํžˆ ๋นŒ๋“œ ํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” yarn ๋กœ ์ „ํ™˜ํ–ˆ๊ณ  ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€์žˆ์–ด์„œ fsevents ์™„์ „ํžˆ ์ œ๊ฑฐํ–ˆ๊ณ  ์ด์ œ local๊ณผ netlify๊ฐ€ ๋ชจ๋‘ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค ...

๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์ด์œ ๋ฅผ ์ถ”์  ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ Mac๊ณผ PC ๋ชจ๋‘์—์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์ธํ„ฐ๋„ท ์†๋„์™€ ๊ด€๋ จ์‹œํ‚ฌ ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ๊ณ ์† ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐ๋˜์—ˆ์„ ๋•Œ๋„ ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ ๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ๊ฒƒ์€ ๋‚ด ํ™˜๊ฒฝ์— ์ด๊ฒƒ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

GATSBY_CONCURRENT_DOWNLOAD=5

--v8-pool-size=128 ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰

์ œ ๊ฒฝ์šฐ์—๋Š” osx์—์„œ ๋‚ด ๋ฐฉํ™”๋ฒฝ ํ”„๋กฌํ”„ํŠธ ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์™ธ๋ถ€์—์„œ ๋“ค์–ด์˜ค๋Š” ์—ฐ๊ฒฐ์„ ํ—ˆ์šฉํ•˜๊ฑฐ๋‚˜ ๊ฑฐ๋ถ€ ํ• ๋งŒํผ ๋น ๋ฅด๋ฉด ์™„๋ฒฝํ•˜๊ฒŒ ์„ฑ๊ณตํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ํ”„๋กฌํ”„ํŠธ ๋Œ€ํ™” ์ƒ์ž๊ฐ€ ์ž ์‹œ ๋™์•ˆ ํŒ์—…๋˜๊ณ  Gatsby๊ฐ€ ๊ณ„์†๋จ์— ๋”ฐ๋ผ ์‚ฌ๋ผ์ง€๊ณ  ์œ„์—์„œ ์–ธ๊ธ‰ ํ•œ ์—ฌ๋Ÿฌ ๋‹จ๊ณ„ ์ค‘ ํ•˜๋‚˜์—์„œ ์ค‘๋‹จ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์˜ต์…˜ :

  • ๋ฐฉํ™”๋ฒฝ ๋น„ํ™œ์„ฑํ™” (๊ทธ๊ฒƒ ์—†์Œ)
  • ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ Gatsby (ํ”„๋กœ์ ํŠธ ๋ฐ ์—…๊ทธ๋ ˆ์ด๋“œ๊ฐ„์— ์ผ๊ด€์„ฑ์ด ์—†์Œ)
  • ์‚ฌ์šฉ์ž๊ฐ€ ์˜ต์…˜์„ ์„ ํƒํ•  ๋•Œ๊นŒ์ง€ ํ”„๋กฌํ”„ํŠธ์—์„œ ์ค‘์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์Šต๋‹ˆ๋‹ค.
  • localhost์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ๋ฐ”์ธ๋“œ ์ฃผ์†Œ (์ˆ˜์‹  ์—ฐ๊ฒฐ์„ ์ˆ˜๋ฝํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กฌํ”„ํŠธ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์•„์•ผ ํ•จ).

@thomasthep dev ์„œ๋ฒ„์˜ ๊ธฐ๋ณธ ๋ฐ”์ธ๋“œ ์ฃผ์†Œ๋Š” ์ด๋ฏธ localhost์ž…๋‹ˆ๋‹ค. ์™ธ๋ถ€ IP ์ฃผ์†Œ (๋˜๋Š” 0.0.0.0)๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์ง€์‹œํ•˜์ง€ ์•Š๋Š” ํ•œ ์™ธ๋ถ€ ์—ฐ๊ฒฐ๋„ ์ˆ˜์‹ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ์—๋„ ๋ถ€ํŠธ ์ŠคํŠธ๋žฉ / ๋นŒ๋“œ๊ฐ€ ์™„๋ฃŒ ๋  ๋•Œ๊นŒ์ง€ ๊ฐœ๋ฐœ ์„œ๋ฒ„๋ฅผ ์‹œ์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฐฉํ™”๋ฒฝ ํ”„๋กฌํ”„ํŠธ๋ฅผ ์œ ๋ฐœํ•˜๋Š” ๊ฒƒ์ด ๋ถ€ํŠธ ์ŠคํŠธ๋žฉ์ด๋ผ๋ฉด Gatsby๊ฐ€ ๊ธฐ๋ณธ ์ƒํƒœ์—์„œ ์ธํ„ฐ๋„ท์— ์—ฐ๊ฒฐํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ค‘์ธ ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ๋” ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ๋งํ•ด์„œ "์™ธ๋ถ€์—์„œ ์˜ค๋Š”"์—ฐ๊ฒฐ๋„ ์—†์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์™ธ๋ถ€ ์†Œ์Šค์—์„œ ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ์—ฐ๊ฒฐ์€ ์™ธ๋ถ€ ์†Œ์Šค๊ฐ€ ์•„๋‹Œ ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ์—์„œ ์‹œ์ž‘๋˜๋ฉฐ ๋Œ€๋ถ€๋ถ„์˜ ๋ฐฉํ™”๋ฒฝ์ด ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด ๊ฒฝํ—˜์ƒ ๋Œ€๋ถ€๋ถ„์˜ ๋ฐฉํ™”๋ฒฝ์—์„œ "์„ค์ •๋œ ์—ฐ๊ฒฐ"๋กœ ์ผ๋ฐ˜์ ์œผ๋กœ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋‚˜๊ฐ€๋Š” ์—ฐ๊ฒฐ์„ ์ˆ˜๋ฝํ•ฉ๋‹ˆ๋‹ค.

๋ฐฉํ™”๋ฒฝ์ด ์—ฐ๊ฒฐ์ด ์•„๋‹Œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฐจ๋‹จํ•˜๋„๋ก ๊ตฌ์„ฑ๋œ ๊ฒฝ์šฐ ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•ด์•ผํ•˜๋Š” ๋…ธ๋“œ๋Š” ๋…ธ๋“œ์ž…๋‹ˆ๋‹ค.

์™œ ๊ทธ๋Ÿฐ ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€ ์ดํ•ดํ•˜๋ ค๋ฉด ๋” ๋งŽ์€ ์ •๋ณด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ƒˆ ํ‹ฐ์ผ“์„ ์—ฌ๋Š” ๊ฒƒ์ด ๋” ํšจ๊ณผ์  ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ MacOS์—์„œ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค๋Š” fsevents ์™€ ๊ด€๋ จ์ด ์žˆ์—ˆ์œผ๋ฉฐ, ๊ทธ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ง€๊ธˆ ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. fsevents ์™€ (๊ณผ) ๊ด€๋ จ์ด์—†๋Š” ๊ฒƒ์€ ๊ทธ ์ž์ฒด๋กœ ๋ฌธ์ œ๊ฐ€ ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ก์˜ ๊ฒฝ์šฐ GraphQL ์„œ๋ฒ„๊ฐ€ ๋””๋ฒ„๊ทธ ๋ชจ๋“œ์—์„œ ์‹คํ–‰๋˜๊ณ  ์ค‘๋‹จ ์ ์—์„œ ์ค‘์ง€ ๋œ ๊ฒฝ์šฐ์—๋„ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ก์„ ์œ„ํ•ด : gatsby-source-s3-image ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  s3 ๋ฒ„ํ‚ท์ด 100 ๊ฐœ๊ฐ€ ๋„˜๋Š” ์ด๋ฏธ์ง€์— ๋„๋‹ฌํ–ˆ์„ ๋•Œ ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. source and transform nodes ๋‹จ๊ณ„์—์„œ 145 ๊ฐœ์˜ ์ด๋ฏธ์ง€๋ฅผ ๋ชจ๋‘ ์‚ดํŽด๋ณธ ๋‹ค์Œ ์˜์›ํžˆ ์ •์ง€๋ฉ๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ๋ฐœ์ƒํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์œ„์˜ ์ˆ˜์ •์„ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹คํ–‰ํžˆ๋„ 5-6 ์‹œ๋„ ํ›„์— ์ž‘๋™ํ•˜๋ฏ€๋กœ ์ฐจ๋‹จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด์ƒํ•˜๊ฒŒ ํ„ฐ๋ฏธ๋„ ์ฐฝ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•˜๋Š” ๊ฒƒ์ด ํšจ๊ณผ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜์—๊ฒŒ๋Š” ์—ฌ๊ธฐ์— ์„ค๋ช… ๋œ๋Œ€๋กœ ๋™์‹œ ๋‹ค์šด๋กœ๋“œ๋ฅผ ์ œํ•œํ•˜๋Š” ๊ฒƒ์ด ๋„์›€์ด๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

.env ํŒŒ์ผ์— ๋‹ค์Œ ์ค„์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ 200์ž…๋‹ˆ๋‹ค.
GATSBY_CONCURRENT_DOWNLOAD=50

๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. :)

@ rishabhaggarwal2 ํ˜„์žฌ ๊ฒฝํ—˜ํ•˜๊ณ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋“ค๋ฆฌ๋Š” ์œ ์‚ฌํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”๋ฐ, ์˜จ๋ผ์ธ ์†Œ์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋™์•ˆ ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค. GATSBY_CONCURRENT_DOWNLOAD=10 gatsby develop ๋ฅผ ์‚ฌ์šฉํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ œ 3 ์ž ์›น ์‚ฌ์ดํŠธ์—์„œ ์ˆ˜๋งŽ์€ ์ฝ˜ํ…์ธ ๋ฅผ ๊ฐ€์ ธ ์™”๊ธฐ ๋•Œ๋ฌธ์— ์ฝ˜ํ…์ธ  ๋‹ค์šด๋กœ๋“œ์— ๊ณ„์† ๋งค๋‹ฌ ๋ ธ์Šต๋‹ˆ๋‹ค. (97 %-๋„ˆ๋ฌด ๊ฐ€๊น์ง€๋งŒ ์ง€๊ธˆ๊นŒ์ง€)

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