Hugoで記事と固定ページを書く

前回は、Hugoのインストール方法とテーマの変更方法について説明した。 今回は記事の作成と配信方法について解説する。

記事を書く

記事の作成には、前回作成したレポジトリのルートでnewコマンドを使う。

$ hugo new post/<post-title>.md

実行すると、content/postディレクトリに<post-title>.mdが作成されている。

$ cat content/post
+++
date = "2016-08-05T07:48:33+09:00"
description = ""
title = "test"

+++

この時、draftオプションをつけてserverを起動させると、 リアルタイムに編集内容を確認することができる。

$ hugo server -builDrafts

記事をサクッと作成する

hugoコマンドはレポジトリのルートでしか動かないが、 書きたいことを思いついた時レポジトリルートにいるとは限らないので、 このようなスクリプトを.zshrcに登録している。

function blog() {
    postPath=/Users/ladicle/Develop/src/github.com/Ladicle/blog/content/post
    if [ $# -eq 0 ]; then
        BLOG_FILES=$(ag -l 'draft = true' $postPath)
    elif [ $1 = '-p' ]; then
        BLOG_FILES=$(ag -l 'draft = false' $postPath)
    elif [ $1 = '-a' ]; then
        BLOG_FILES=$(\ls $postPath)
    else
        cat<<EOF > $postPath/$1.md
+++
draft = true
date = "$(date "+%Y-%m-%dT%H:%M:%S+09:00")"
description = "$3"
title = "$2"
categories = []
tags = []
+++
EOF
        emacsclient -nw -a "" $postPath/$1.md
        return 0;
    fi
    
    echo "$BLOG_FILES" |\
        sed 's/^.*\/\(.*\)\.[^\.]*$/\1/' |\
        peco |\
        xargs -I{} emacsclient -nw -a "" $postPath/{}.md

}

-pをつけたら公開済み記事一覧、-aをつけたら全ての記事一覧を[peco][2]を使って選択し、emacsで開くようにしている。

Aboutページを追加する

上記の手順で記事はcontent/post/*に作成したが、 固定ページはcontent/*配下に配置する。
例えば、

(%-U-)< tree content
content
├── about.md
└── post
    ├── add-github-templates.md
    ├── apache-mesos.md
    ├── docker-left-oci.md

このようにabout.mdを配置すると https://your-site-host/aboutに公開される。

次回

Github.io上でサイトを公開する方法について書く。

comments powered by Disqus