June 13, 2021
๋ธ๋ก๊ทธ๋ฅผ ๋ง๋ค๊ธฐ ์ํด์ gatsby + netlify ์กฐํฉ์ ์ ํํ๋ค.
gatsby๋ React + GraphQL์ ๊ธฐ๋ฐ์ผ๋ก ํ SSG(์ ์ ์ฌ์ดํธ ์์ฑ๊ธฐ)๋ค. React๋ฅผ ๊ณต๋ถํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌ ๊ฐ์ง SSG์ค Next.js์ gatsby๋ฅผ ๋๊ณ ๊ณ ๋ฏผํ๋๋ฐ, ์๊ท๋ชจ์ ๋ธ๋ก๊ทธ๋ฅผ ์ด์ํ๊ธฐ์ ๋ ์ ํฉํ gatsby๋ฅผ ํํ๋ค. SSG์ ๋ํด์๋ ์ด๊ณณ์ ์ ๋ฆฌํด ๋์๋ค. Netlify๋ ํด๋ผ์ฐ๋/์น ํธ์คํ ์๋น์ค๋ค. ์์ฆ ๋ง์ด๋ค ์ฌ์ฉํ๋ ํธ์คํ ์๋น์ค์ธ ๊ฒ ๊ฐ์์ ๋๋ ํ ๋ฒ ์จ๋ดค๋ค.
JBEE๋์ด ๋ง๋ ์คํํฐ ํ ๋ง gatsby-starter-bee๋ฅผ ์ด์ฉํด์ ๋งค์ฐ ์ฝ๊ฒ ๋ธ๋ก๊ทธ๋ฅผ ๋ง๋ค ์ ์์๋ค.
gatsby-starter-bee๋ฅผ ์ค์นํ๊ณ ์คํํ๋ค.
npm i -g gatsby-cli
gatsby new my-blog-starter https://github.com/JaeYeopHan/gatsby-starter-beecd my-blog-starter
npm startGithub Repo๋ฅผ ์์ฑํ ๋ค Netlify์ ์ ์ํ์ฌ ํด๋น Repo๋ฅผ ์ฐ๋ํด์ฃผ๋ฉด ๊ธ์ ์ฌ์ดํธ๊ฐ ๋ง๋ค์ด์ง๋ค. ๋ธ๋ก๊ทธ์ ๋ณ๊ฒฝ๋ ์ฌํญ์ด ์์ผ๋ฉด ๊น์ ํธ์ฌํด์ฃผ๋ ๊ฒ๋ง์ผ๋ก Netlify๊ฐ ์๋์ผ๋ก ํตํฉํ๊ณ ๋ฐฐํฌํด์ค๋ค.
๊ฒ์๊ธ์ ์ธ๋ค์ผ์ ์ฃผ๊ณ ์ถ์๋ค. hexdrinker๋์ ๋ธ๋ก๊ทธ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋ฐ๋ผ ๊ณ ์ณค๋ค.
์ ์ ๋ฆฌ๋ ๋ธ๋ก๊ทธ๋ฅผ ์ ๊ทน ์ฐธ๊ณ ํ๋ค. Gatsby Blog ๊ฒ์์์ง ์ต์ ํ๋ ์ฐธ๊ณ ํ๋ค.
sitemap์ ๊ตฌ๊ธ ์น ํฌ๋กค๋ฌ๊ฐ ๋ด ๋ธ๋ก๊ทธ๋ฅผ ํฌ๋กค๋งํ๊ธฐ ์ํ ์ด์ ํ ์ญํ ์ ํ๋ค๊ณ ํ๋ค.
plugins: [
...
'gatsby-plugin-sitemap',
...
]npm add gatsby-plugin-sitemap
gatsby developlocalhost:8000/sitemap.xml ์ ์ ์ํ์ฌ sitempa์ด ์์ฑ๋ ๊ฒ์ ํ์ธ
// package.json
"scripts": {
"build": " gatsby build && cp google์ด์ฉ๊ตฌ.html public/",
...
},yarn build
gatsby servelocalhost:9000/google์ด์ฉ๊ตฌ.html๋ก ์ ์ํ์ฌ ์ธ์ฆ์ฉ HTML ๋ด์ฉ์ด ์ ์ถ๋ ฅ๋๋์ง ํ์ธ๋ค์ด๋ฒ ์ฌ์ดํธ ๊ฐ๋จ ์ฒดํฌ์ ์ ์ํ์ฌ ๋ธ๋ก๊ทธ URL์ ์ ๋ ฅํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ๋ค. robots.txt ํญ๋ชฉ์๋ง ๋ฌธ์ ๊ฐ ์๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
robots.txt๋ ๊ฒ์๋ก๋ด์๊ฒ ์ฌ์ดํธ ๋ฐ ์นํ์ด์ง๋ฅผ ์์งํ ์ ์๋๋ก ํ์ฉํ๊ฑฐ๋ ์ ํํ๋ ๊ตญ์ ๊ถ๊ณ ์์ ๋๋ค.
npm add gatsby-plugin-robots-txt
yarn build gatsby serve ์
๋ ฅ ํ http://localhost:9000/robots.txt์ ์ ์ํ์ฌ ํ์ธ. ๊น์ ์ปค๋ฐํ์ฌ netlify์ publish๋ ๊ฒ์ ํ์ธ.
๋ค์ด๋ฒ ์น ๋ง์คํฐ ์ฌ์ดํธ ๋ฑ๋ก ํ์ด์ง ์์ sitemap.html์ ๋ค์ด๋ฐ๊ณ ๊ตฌ๊ธ์ ๋ฑ๋กํ์ ๋์ ๋๊ฐ์ด ๋ฑ๋กํ๋ฉด ๋๋ค.
๋ค์์ ToC(Table of Contents), ๋งจ ์๋ก๊ฐ๊ธฐ ๋ฒํผ์ ์ถ๊ฐํ๋ ๊ณผ์ ์ ์ ์ ๋ฆฌํด์ ์ฌ๋ ค๋ณด์.