September 30, 2017

Hugoで記事に最終更新日とそのコミットを表示する

最初に投稿したあとに、更新することもあるのでそのコミットログと、いつの更新だったかを把握できるようにしたかった。

すでにHugoにはGitの情報を取得できる変数があったGitの情報を取得できる変数があるのでそれを利用する。

有効にする方法は、 config.toml

enableGitInfo = true

と書くと有効になります。

また、最終更新日の表示は、Page Variables.Lastmod が利用できます。

今回その2つを利用して、


{{ with .GitInfo }}
  <h3 class="subtitle is-6">{{$.Page.Site.Params.latest}}</h3>
  <div class="content">
    <a href="{{$.Page.Site.Params.repourl}}/commit/{{.GitInfo.Hash}}">{{$.Page.Lastmod}}</a>
  </div>
{{ end }}

と書きました。($.Page.Site.Params.repourlにはGitHubのURLを入れています)

ハマったこと

コミットのない投稿のプレビューができない

新しく作った投稿にはコミットハッシュがないため、.GitInfoが取得できないというエラーが出てhugo serverを利用したプレビューが表示されません。

これを回避するために、with .GitInfo を追加して、.GitInfoがある場合のみ表示するようにしました。

wercker経由でのデプロイに失敗する

このサイトは、werckerを利用してGitHub Pages上にデプロイしています。

Hugoのビルドは、arjen/hugo-buildを利用しています。

.GitInfo を利用するにあたって、gitinfo.go:39: Got error reading Git log: Git executable not found in $PATH というエラーが出ていました

解決方法としては、

  steps:
    - install-packages:
        packages: git
    - arjen/hugo-build:
        version: "0.18"
        theme: hemingway
        flags: --buildDrafts=true

というように、arjen/hugo-buildを利用する前にgitをインストールすることで対処できました。


最終更新日

© kimihito 2018