Jekyll Cheatsheet : 정적 블로그 관리 Ruby Gem

web | 15 November 2017

Tags | ruby jekyll

jekyll 로 신나게 static 한 블로그를 만들거나 수정하고 나서, 한참 뒤에 다시 블로그 코드를 고치려고 하면 jekyll 다루는 법이 잘 기억이 나지 않곤 한다.

jekyll 의 작동 방식은 비교적 간단한 편인데, 이것 저것 다른 일들을 하다보면 종종 까먹어서, 나를 위한 jekyll cheatsheet 를 정리해보려고 한다.

jekyll 기본 동작 방식

1. 텍스트 파일을 html 파일 변환

jekyll 은 정적인 웹사이트를 만들어주는 프로그램(ruby gem)이다.

jekyll 에서 동적인 작업은 모두 ruby 로 처리되고, 동적 변환을 마친 정적 결과물들 (html, css, javascript, contents 파일 등) 은 _site 폴더 안에 저장된다.

** [다양한 형식의 텍스트 함유 파일(md, markdown, html 등)] -> [Converter] -> [Liquid Renderer] -> [html 파일] **

Converter, Renderer 등 동적인 작업을 해주는 파일은 ruby 로 작성된다.

Converter, Liquid Renderer 들은 _plugins 폴더에 새로운 ruby 파일을 작성해 추가할 수 있다.

[Converter] : .md, .markdown -> .html

Converter 는 아래에 해당되는 디렉터리를 모두 긁어서 텍스트파일을 html로 변환한다.

  1. jekyll project 디렉터리 하에 있는 시스템 폴더(폴더명 앞에 _folder 이렇게 붙어있는 폴더)를 제외한 모든 폴더
  2. _posts 폴더

[Liquid Renderer] : global / page variables 들을 이용해 변환 제어

jekyll 은 사실 “[텍스트파일]->[html파일]” 의 변환이 전부이다.

이 동적인 변환 과정을 global variables 와 page variables 을 이용 해서 디테일하게 프로그래밍적으로 조종하고 중복(redundancy) 를 줄일 수 있다.

Liqiud Renderer 는 jekyll project 디렉터리 내에 존재하는 global/page variables 들을 수집해 페이지 렌더링에 사용한다.

liquid 문법에 관한 자세한 내용은 Liquid Hompage 에서 참고할 수 있다.

1) global variables

jekyll project 디렉터리 최상단 _config.yml 파일에 기술된 variable 들이다.

담당하는 역할은 2가지이다.

  1. 모든 page 객체들 속의 page variables 들의 default 값을 제공한다.

  2. jekyll system 의 설정값 역할을 한다.

2) page variables

jekyll project 내 존재하는 Converter 가 인식하는 모든 파일들(.html, .md, .markdown 또는 커스텀 텍스트 파일 등)의 상단에 yml 형식으로 기술되는 page variables 들이다.

page.page_variable_name 으로 조회 가능하다.

예를 들어 index.html 의 상단에 기술된 yml 이 아래와 같다면

---

title : "this is the title"

id : 10

---

index.html 문서 내에서 다음과 같이 조회할 수 있다.

Jekyll Cheatsheet : 정적 블로그 관리 Ruby Gem

/post/11

jekyll Command Line 다루는 법

1. 설치

두개의 ruby gem을 설치해야한다. (jekyll, bundler)

ruby gem 은 ruby 의 규칙으로 작성된 프로그램을 말한다. command line 의 gem 명령어로 설치할 수 있다.

> gem install jekyll
> gem install bundler
  1. jekyll : jekyll 프로젝트를 다루는 프로그램(gem)이다. 새로운 프로젝트 생성, 빌드, 배포 등을 처리할 수 있다.
  2. bundler : Ruby gem 을 관리해주는 프로그램(gem)이다. 패키지 매니져 같은 느낌(?). 프로젝트 디렉터리의 Gemfile, Gemfile.lock 파일이 프로젝트에 필요한 ruby gem 목록을 bundler 에게 알려준다.

2. 프로젝트 생성

> cd project_dir
> jekyll new project_name
(> bundle install) #자동실행
---
project_dir/project_name/...(contents)

3. 로컬 서버 테스트

> bundle exec  
> jekyll serve --no-watch --detach

4. 프로젝트 배포

프로젝트 디렉터리에 _site 라는 이름을 가진 폴더를 생성하고, 그 안에 정적 웹사이트 빌드 결과물을 생성한다.

> bundle exec  
> jekyll build --watch