Jekyll Markdown 파일의 front matter를 제외하고 HTML변환하기

서론

mark2html 0.0.5 버전은 Jekyllfront matter 가 포함된 Markdown 파일에서 front matter를 skip하고 렌더링 할 수 있는 옵션 -skip-front-matter를 추가 하였다.

Jekyll

jekyll

Jekyll은 static website(blog) 프레임워크이다.

Jekyll은 static website(blog)를 만들 때 Markdown 파일을 사용해서 HTML 페이지를 만든다.

다시 말해서 Jekyll은 Markdown만 있으면 웹 사이트와 블로그를 서비스를 쉽게 만들 수 있다는 말이다. 더이상 기존의 웹 프로그램을 하듯 HTML을 생성할 필요도 없고, 데이터베이스 연결을 고민할 필요가 없다. 단순하게 Markdown으로 글을 작성하면 Jekyll 안에서 자동으로 static HTML 파일이 생성이 되기 때문이다. Jekyll은 GitHub에서 공식적으로 GitHub Pages를 만드는 방법에 소개를 하면서 더욱 유명해지기 시작했다. GitHub는 Ruby로 만들어져 있고 Jekyll 역시 Ruby로 만들어져 있기 때문에 Jekyll로 만든 디렉토리를 모두 GitHub 저장소에 올려두고 push를 하는 것 만으로 쉽게 GitHub를 이용한 웹사이트나 블로그를 만들 수 있다. Jekyll로 GitHub site를 사용해서 웹 서비스를 만드는 방법은 이 후에 자세히 포스팅 할 예정이다.

Front Matter

Front Matter는 Jekyll이 Makrdown을 해석할때 사용하는 메타정보를 표현하는 것으로 Markdown 파일이 시작하는 첫 부분에 YAML 포멧으로 작성된 것이다. front matter는 ---으로 시작해서 ---를 끝으로 이 사이에 정보를 YAML 포멧으로 저장한다.

예를 들면 다음과 같이 Markdown 파일이 시작하는 첫 부분에 front matter를 추가하는 것이다. 아래 내용은 Jekyll이 자동으로 category에 맞는 디렉토리에 파싱된 HTML을 post 라는 레이아웃으로 저장할 것이다.

---
layout : post  
category : articles  
tags : [mark2html, node, markdown]  
title : mark2html 버전 0.0.5 업그레이드 소개  
---

이것은 Markdown의 표준 마커업이 아니다. Jekyll이나 다른 서비스에서 적용할 수 있는 문법으로 기본적인 Markdown 파서는 front matter를 해석하지 못하는 문제가 발생한다.

-skip-front-matter 옵션

mark2html@0.0.5 에서는 Jekyll에서 생성하여 사용하는 front matter가 포함된 Markdown 파일을 HTML 으로 변환하기 위해서 -skip-front-matter 옵션을 추가하였다. 이 옵션을 사용하면 Jekyll에 사용하고 있는 Markdown을 HTML으로 변환할 때 front matter를 생략하고 나머지 Markdown 내용만 변환할 수 있다. 사용 방법은 다음과 같다.

명령어 옵션으로 사용할 때

mark2html 명령어가 없다면 npm으로 설치한다.

npm install -g mark2html  

Markdown 파일에 front matter가 포함되어 있다면 mark2html 명령어에 -skip-front-matter 옵션을 함께 사용한다.

mark2html -skip-front-matteer -s /Users/saltfactory/blogs/blog.saltfactory.net/posts/2014-08-25-mark2html-v.0.0.5-upgrade.md  

node 모듈료 사용할 때

모듈을 찾을 수 없다면 로컬 모듈로 mark2html을 설치한다.

npm install mark2html  

mark2html.convert()를 사용때 적용하는 옵션에 skipFrontMattertrue로 지정한다.

var mark2html = require('mark2html');

var options = {  
    src: '/Users/saltfactory/blogs/blog.saltfactory.net/posts/2014-08-25-mark2html-v.0.0.5-upgrade.md',
    destDir: '/User/saltfactory/DropBox/Blog/output',
    skipFrontMatter:true
};

mark2html.convert(options);  

결론

현재 blog는 Tistory 기반으로 사용하고 있지만 이 서비스는 Markdown을 사용하기에 적합하지는 않기 때문에 GitHub pages를 사용하여 블로그를 이전하려고 준비하고 있다. mark2html은 Markdown 파일을 Tistory에 포스팅하기 위해서 만들게 된 변환 모듈인데 이 것을 Jekyll에서 생성한 Markdown에 적용을 할 때, front matter 때문에 문제가 발생하였다. 지금은 Jekyll를 사용하여 GitHub를 만들어가고 있기 때문에 front matter가 저장된 Markdown들이 많이 있다. 이것을 표준 Markdown 형태로 변환해서 mark2html으로 HTML을 만들어서 Tistory에 올리기 위해서 mark2html에 -skip-front-matter 옵션을 추가하였다. 이 기능을 추가하고 난 이후 이젠 Jekyll에서 Markdown을 사용하여 static page를 만들기도 하고 특별한 작업없이 사용한 Markdown을 기존의 표준 Markdown으로 Archive 하는데 동일하게 사용할 수 있게 되었다.

참고

  1. http://jekyllrb.com/docs/frontmatter/
  2. https://github.com/saltfactory/mark2html
  3. http://stackoverflow.com/questions/15207069/remove-yaml-header-from-markdown-file