# 지킬에서 작성 중인 글을 관리하는 방법

누구나 접근할 수 있는 공간에 글을 쓴다는 것은 상당한 부담을 동반합니다. 제 경우만 봐도 기존에 여러 차례 블로그를 만들었다가 유지하지 못했던 이유 중 가장 큰 것이 완벽한 글 에 대한 부담감이었습니다.

또한, 깃헙(github.com) 에서 파이어베이스(firebase.com)로 웹 사이트를 이동한 큰 이유 중 하나가 내 모든 글쓰기 과정이 날것으로 공유된다는 부담감입니다 (물론 대다수는 관심이 없겠지만 말이죠). 지금은 호스팅은 파이어베이스, 코드 관리는 비트버킷(bitbucket.org) 플랫폼을 분리시켜서 마음의 안정을 찾았습니다.

지킬에서는 작성 중인 글을 위한 기능을 제공합니다. 지킬에 충분히 익숙하신 분은 지킬 공식문서만 보셔도 충분히 익히실 수 있습니다. 이 글에서는 저의 글 작성 흐름을 간단하게 정리하고, 배포까지 연결되는 과정을 정리했습니다.

# 작성 중인 글을 구분하기

처음 지킬을 사용할 때는 무조건 _posts폴더 아래에 오늘 날짜로 이름이 시작하는 빈 마크다운 파일을 만드는 것으로 시작했습니다. 예를들어 touch _posts/2017-1-14-working-with-draft.md 처럼 말이죠. 그럼 아래와 같은 구조가 생기겠죠.

├── _posts
│   ├── 2017-1-14-working-with-draft.md

하지만 지킬은 작성 중인 글을 위해 두 가지 요소를 준비했습니다. _drafts 폴더와 jekyll serve 명령을 위한 --drafts 인자입니다.

우선 작성하고 싶은 글을 _drafts 폴더에 추가합니다. 이때 유의할 점은 파일명이 날짜 로 시작할 필요가 없다는 점입니다. 지킬이 빌드 하는 시점에 현재 날짜로 해당 글을 보여줄 것입니다.

├── _drafts
│   ├── working-with-draft.md

이렇게 작성된 글은 jekyll buildjekyll serve 명령으로는 변환되지 않습니다. 하지만 --drafts 인자를 주면 현재 날짜로 해당 글이 목록에 추가된 것을 확인할 수 있습니다.

이 글의 경우 --drafts 인자에 따라 public/index.html의 결과가 달라진 것을 확인할 수 있습니다.

$ jekyll build
$ grep 'working-with-draft.html' public/index.html  # 결과 없음
$ jekyll build --drafts
$ grep 'working-with-draft.html' public/index.html  # 결과 있음
        </p><a href="/jekyll/draft/2017/01/14/working-with-draft.html" class="btn btn-primary btn-block" role="button">Read More</a>

# (선택) 웹팩을 통한 자동화

이 과정에 실수가 없게 하기 위해서 웹팩을 통해 자동화 합니다. 아래는 제가 사용하는 package.json 의 일부분입니다.

개발에 사용하는 "web" 항목을 보면 jekyll serve 명령에는 --drafts 인자가 들어가있고, 배포를 위한 "deploy" 항목에는 이 인자를 생략해서 실수로 배포되는 경우가 없도록 했습니다.

저는 이전과 동일하게 개발할 때는 npm run web 명령을 배포 할때는 npm run deploy 명령을 사용하면 됩니다. 실수할 여지는 사라졌습니다.

# 작성완료

작성을 마치면 할 일은 단순합니다. _draft의 글을 _posts로 옮겨줍니다. 이름 앞의 날짜는 스크립트를 이용합니다.

$ mv _drafts/working-with-draft.md _posts/`date +"%Y-%m-%d"`-working-with-draft.md

복사하는 과정을 스크립트로 만들면 아래와 같습니다.

이제 배포만 하면 되겠군요 ~!

Last Updated: 3/23/2020, 11:10:33 PM