ํ
๋ง ์์
์ค์ด๋ฉฐ ๋ก์ปฌ ๋น๋๊ฐ ๋ฌธ์ ์์ด ์ ์๋ํ์ผ๋ฉฐ ์ต๊ทผ์ ๋ชจ๋ ์ข
์์ฑ์ 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
์ ๋ฐ์ดํธ ๋จ-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
๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
๋ด๊ฐ ์ฐพ์ ๋ฐฉํฅ :
๊ทธ๋ ์ด๋ gatsby-plugin-sitemap
๋ถํฐ 2.2.9
๋ก 2.2.6
๊ฐ์ง ๋ฌธ์ ์ ์ ํด๊ฒฐ yarn develop
.
gatsby-plugin-sitemap
๊ฐ ๊ฐ๋ฐ ๋น๋์ ์ํฅ์์ฃผ์ง ์๊ธฐ ๋๋ฌธ์ ์ด์ํฉ๋๋ค.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
๋๋ ๋ ๊ฐ์ง ํ๋ช ํ ์ผ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
node --inspect
๊ทธ๋ฆฌ๊ณ ๋ช
๋ฐฑํ ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌ ํ ์ ์๋์ง ํ์ธ์ต์ ์ ๋ณด:
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
๊ฐ ๋ ๋ฒ ์คํ๋์์ผ๋ฏ๋ก ๋ฒ ์ด ๋ณธ ์ ์ฅ์๊ฐ ์๋์ ์ ์ ์์ต๋๋ค. ์๋ฒฝํ ์ธ์์์๋ ์ค์ํ์ง ์์ง๋ง ๊ฐ๋ฅํ ํ ๊ฐ๋จํ ์ค์ ์ ์คํํ๋ ๊ฒ์ด ๋ ๋ซ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ต์ํ์ ๋ฆฌํฌ์งํ ๋ฆฌ๋ก ์์ ์ ์ผ๋ก ์คํจ ํ ์์๋ ๊ฒฝ์ฐ ๊ฐ์ฅ ์ผ๊ด๋๊ฒ ์คํจํ๋ ํญ๋ชฉ์ ์ฌ์ฉํ์ญ์์ค (๋์ผํ ์ฅ์์์ ๋งค๋ฒ (๋๋ ๊ฐ๊น์ด์))
๐
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๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
npm start
)@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 ํ ์ด๋ธ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๊ณ ์์ต๋๋ค.
๊ทธ๊ฒ ๋ฌธ์ ๊ฐ ๋ ์ ์์ต๋๋ค. ์ด ์๊ฒฌ์ ํ์ธํ์ญ์์ค. ๊ทธ๋๋ ์๋ํ์ง ์์ผ๋ฉด ์ ํฐ์ผ์ ์ฌ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ธ๊ธ ๋ ์ดํ 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๊ฐ ๊ณ์๋จ์ ๋ฐ๋ผ ์ฌ๋ผ์ง๊ณ ์์์ ์ธ๊ธ ํ ์ฌ๋ฌ ๋จ๊ณ ์ค ํ๋์์ ์ค๋จ๋์ง ์๋๋ค๋ ๊ฒ์
๋๋ค.
์ต์
:
@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 %-๋๋ฌด ๊ฐ๊น์ง๋ง ์ง๊ธ๊น์ง)
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์๋ ํ์ธ์,
fsevents
์ ํจ์น ๋ฒ์ ์ด ๊ฒ์๋์์ต๋๋ค. yarn.lock ํ์ผ์ ์ญ์ ํ๊ณ yarn์ ๋ค์ ์คํํ ์ ์์ด์ผํฉ๋๋ค. ๊ฐ ์ข ์์ฑ์ ์๋์ผ๋ก[email protected]
์ ์ ํํด์ผ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ฉ๋๋ค.