Contents

Jekyll์— ๋Œ€ํ•˜์—ฌ

   Jul 5, 2023     1 min read

Jekyll ํ”„๋กœ์ ํŠธ React์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.

Jekyll๋กœ ๋ธ”๋กœ๊ทธ๋ฅผ ์ œ์ž‘ํ•˜๋˜ ์ค‘, ๊ธฐ์กด React์˜ ๊ฐœ๋ฐœํ™˜๊ฒฝ์— ์ต์ˆ™ํ•˜๋˜ ์ €๋Š” ๋‹ต๋‹ตํ•จ์„ ๋Š๊ผˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค.

Jekyll์€ ๋ฌด์—‡์ธ๊ฐ€?

Jekyll์€ ์ •์  ์‚ฌ์ดํŠธ ์ƒ์„ฑ๊ธฐ์ž…๋‹ˆ๋‹ค. ์ •์  ์‚ฌ์ดํŠธ ์ƒ์„ฑ๊ธฐ๋Š” ์‚ฌ์ „์— ์ปดํŒŒ์ผ๋œ ์ •์  ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์—ฌ ์›น ์„œ๋ฒ„์— ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. ๋™์  ์ปจํ…์ธ ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์„œ๋ฒ„ ์ธก ์Šคํฌ๋ฆฝํŠธ๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๊ฐ™์€ ๋™์  ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์›น ์‚ฌ์ดํŠธ๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ  ํ˜ธ์ŠคํŒ…ํ•˜๊ธฐ์— ๋งค์šฐ ์œ ์šฉํ•œ ๋„๊ตฌ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ •์ (static)์œผ๋กœ ๋งŒ๋“ค๋ฉด ์–ด๋–ค ์ด์ ์ด ์žˆ์„๊นŒ?

๋ฐ”๋กœ ๋น ๋ฅธ ๋กœ๋”ฉ ์†๋„, ๋ณด์•ˆ์„ฑ, ํ˜ธ์ŠคํŒ… ๋ฐ ๋ฐฐํฌ์˜ ์šฉ์ด์„ฑ์ž…๋‹ˆ๋‹ค. ์ •์  ํŒŒ์ผ์€ ์บ์‹ฑ๋˜๋ฏ€๋กœ ์„œ๋ฒ„์— ๋งŽ์€ ๋ถ€ํ•˜๋ฅผ ์ฃผ์ง€ ์•Š์œผ๋ฉฐ, ๋ณด์•ˆ ์œ„ํ—˜์ด ์ ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ •์  ์‚ฌ์ดํŠธ๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜๊ธฐ ์œ„ํ•ด ๋‹จ์ˆœํ•˜๊ฒŒ ์›น ์„œ๋ฒ„๋งŒ ํ•„์š”ํ•˜๊ธฐ์— ํŠน๋ณ„ํžˆ ์„œ๋ฒ„ ์„ค์ •์ด๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. (๊ตณ)

์™œ React ๊ฐœ๋ฐœ์ž๊ฐ€ ๋‹ต๋‹ตํ•จ์„ ๋Š๊ผˆ์„๊นŒ?

Jekyll์„ ์•Œ์•„๋ณด๋ฉฐ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. React๋Š” ๊ฐ€์ƒ DOM์„ ์‚ฌ์šฉํ•˜์—ฌ ํšจ์œจ์ ์ธ UI ์—…๋ฐ์ดํŠธ๋ฅผ ์ œ๊ณตํ•ด์ค๋‹ˆ๋‹ค. ์ด๋Š” ์‚ฌ์šฉ์ž์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์— ๋”ฐ๋ผ ๋™์ ์œผ๋กœ UI๊ฐ€ ๋ณด์ธ๋‹ค๋Š” ๊ฒƒ์ด๊ณ , ์ œ๊ฐ€ Jekyll์„ ์‚ฌ์šฉํ•˜๋ฉฐ ๋‹ต๋‹ตํ•จ์„ ๋Š๊ผˆ๋˜ ๋ถ€๋ถ„์ด์˜€์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์ตœ๋Œ€ํ•œ React์ฒ˜๋Ÿผ ์“ธ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์„๊นŒ์š”?

๋ฐ”๋กœ Guard๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค! Guard๋Š” Jekyll(์ฆ‰ Ruby๊ธฐ๋ฐ˜ ํ”„๋กœ์ ํŠธ)์—์„œ ํŒŒ์ผ ์‹œ์Šคํ…œ ์ด๋ฒคํŠธ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ํŠน์ • ์ž‘์—…์„ ์‹คํ–‰ํ•˜๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์†Œ์Šค ์ฝ”๋“œ ๋ณ€๊ฒฝ, ํŒŒ์ผ ์ƒ์„ฑ๊ณผ ์‚ญ์ œ ๊ฐ™์€ ํŒŒ์ผ ์‹œ์Šคํ…œ ์ด๋ฒคํŠธ๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ์ด์— ๋Œ€์‘ํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ์ง€์ •ํ•œ ์ž‘์—…์„ ์‹คํ–‰ํ•ด์ค๋‹ˆ๋‹ค. ์ฃผ๋กœ ๊ฐœ๋ฐœ ์ž‘์—…์˜ ์ž๋™ํ™”๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ํŽธ์ž…๋‹ˆ๋‹ค!

Guard๊ฐ€ ๋ญํ•˜๋Š”์ง€๋Š” ์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค, ๊ทผ๋ฐ Jekyll ํ”„๋กœ์ ํŠธ์— ์–ด๋–ป๊ฒŒ ์ ์šฉํ• ๊นŒ์š”?

์ ์šฉ ์˜ˆ์‹œ ํ„ฐ๋ฏธ๋„ ๋˜๋Š” ๋ช…๋ น ํ”„๋กฌํ”„ํŠธ์—์„œ bundle install ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์˜์กด์„ฑ์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

gem 'jekyll'
gem 'guard-jekyll-plus'

ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ Guardfile์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค:

bundle exec guard init jekyll_plus

Guardfile์„ ์ƒ์„ฑํ•˜๊ณ  Guard Jekyll Plus์™€ ๊ด€๋ จ๋œ ์„ค์ •์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

guard :jekyll_plus, command: 'bundle exec jekyll serve' do
  watch %r{^.*\.(md|markdown|html)$}
  watch %r{^_config\.yml$}
  # ๋‹ค๋ฅธ ํŒŒ์ผ ๊ฐ์‹œ ๊ทœ์น™ ์ถ”๊ฐ€ ๊ฐ€๋Šฅ
end

Guard๋ฅผ ์‹คํ–‰ํ•˜๊ณ  Jekyll์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. Jekyll์€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ฐ์ง€ํ•˜๊ณ  ์‚ฌ์ดํŠธ๋ฅผ ๋™์ ์œผ๋กœ ์—…๋ฐ์ดํŠธ๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.