004. JeKyll 디렉토리 구조

디렉토리 구조

본 카테고리는 정적 블로그 생성도구인 Jekyll에 관하여 작성하는 곳이다.

공식 사이트의 내용을 좀 더 풀어쓰고 스크린샷을 첨부하여 좀 더 상세히 기록하고자 한다.

참고 Jekyll 공식 사이트

전체적인 디렉토리 구조 보기

Jekyll의 핵심은 텍스트 변환 엔진이다.

Markdown, Texttile, 혹은 순수 HTML 언어 등의 Markup언어로 문서를 작성하면 Jekyll이 변환하는 형태인 것이다.

Jekyll은 위의 Markup 언어들로 작성된 문서들을 여러 형태의 레이아웃으로 바꿔준다.

예를 들어 생성될 정적 웹사이트의 URL 구성 방식이나, 레이아웃의 데이터가 배치될 방식 등 텍스트 변환 과정에 다양한 동작들을 원하는 대로 관리할 수 있다.

위에서 언급했다시피 Jekyll의 핵심은 텍스트 변환이기때문에 위의 모든 동작들이 텍스트 파일의 수정 및 저장을 통해서 가능하다.

아래는 Jekyll로 생성될 가장 기초적인 정적 웹사이트 구조이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
.
├── _config.yml
├── _drafts
| ├── begin-with-the-crazy-ideas.textile
| └── on-simplicity-in-technology.markdown
├── _includes
| ├── footer.html
| └── header.html
├── _layouts
| ├── default.html
| └── post.html
├── _posts
| ├── 2007-10-29-why-every-programmer-should-play-nethack.textile
| └── 2009-04-26-barcamp-boston-4-roundup.textile
├── _data
| └── members.yml
├── _site
├── .jekyll-metadata
└── index.html

이제부터 하나씩 각 파일 및 디렉토리의 역할을 알아보자.

_config.yml

Jekyll로 생성될 정적 웹사이트의 환경설정 정보를 가지고 있다.

Jekyll의 명령어들을 다 외우는 것보다 자주 쓰는 명령어들의 옵션을 미리 저장하여 쉽게 사용할 수 있다.

_drafts

_drafts에 있는 파일들은 아직 게시되지 않은 포스트를 말한다.

_posts와 비교해보면 파일명에 아직 게시날짜가 없는 것을 확인할 수 있다.

_includes

_includes에 있는 파일들을 다시 사용되는 파일들을 말한다.

_layouts

포스트를 꾸밀 수 있는 템플릿 코드들이 담겨있는 폴더이다.

각 포스트마다 레이아웃을 선택할 수 있으며, 선택의 기준은 YAML 머릿글이다.

_posts

Markup 언어로 작성된 포스트들, 즉 홈페이지 관리자가 작성한 파일들이다.

Jekyll로 작성된 포스트 파일은 명명규칙을 반드시 지켜야 한다.

위의 전체 구조에서 볼 수 있듯이 명명규칙은 YEAR-MONTH-DAY-title.MARKUP이다.

_data

생성될 사이트에 사용할 데이터들이 보관되는 폴더이다.

Jekyll은 _data폴더에 있는 모든 모든 데이터 파일을 자동으로 불러와 site.data를 통해 접근할 수 있도록 한다.

만약

1
2
3
.
└── _data
└── members.yml

위와 같은 구조라면 site.data.members를 통해 member.yml파일에 접근할 수 있다.

_data폴더에서 Jekyll 엔진이 접근하는 데이터 파일은 *.yml, *.yaml, *.josn, *.cvs 형식의 파일을 말한다.

YAML이란?
XML, C, 파이썬, 펄, RFC2822에서 정의된 e-mail 양식에서 개념을 얻어 만들어진 ‘사람이 쉽게 읽을 수 있는’ 데이터 직렬화 양식이다.

_site

Jekyll 엔진이 source 폴더 내용을 기반으로 생성한 정적 사이트를 저장하는 기본적인 destination이다.

Jekyll은 빌드할 때 기본적인 destination으로 ./_site를 갖는다.

_site는 destination에 대한 옵션을 지정하지 않으면 Jekyll 엔진이 자동적으로 사이트를 생성하는 폴더이다.

참고 일반적으로 destination 폴더를 .gitignore에 추가한다.

.jekyll-metadata

Jekyll은 .jekyll-metadata 파일을 이용하여 변경사항을 검사한다.

즉, .jekyll-metadata은 정적 웹 사이트가 마지막으로 빌드 된 이후 수정되지 않은 파일과 다음 빌드에서 재생성해야 하는 파일을 트래킹한다.

따라서 .jekyll-metadata은 생성된 웹 사이트에 포함되지 않는다.

참고 .jekyll-metadata 파일을.gitignore에 추가하는 것이 좋다.

index.html(index.md) 및 HTML, Markdown, Textile 파일들

모든 파일의 머릿글에 YAML Front Matter 섹션이 있으면 Jekyll 엔진에 의해서 변환된다.

Jekyll의 변환은 만들려는 사이트의 디렉토리에 있는 .html, .markdown, .md, .textile에도 적용된다.

기타 파일/폴더

위에 설명된 디렉토리와 파일을 제외한 css 및 images 폴더, favicon.ico 등 모든 파일들은 생성된 정적 웹 사이트에 그대로 복사된다.

기존에 Jekyll로 작성된 웹 사이트들이 많이 존재하고 있으므로, 참조한다면 어떻게 배치했는 지 확인할 수 있다.