Hugoで静的サイトを作る(1) インストール ~ 動作確認
ブログを始めるにあたってWordpressだと運用が面倒なので静的コンテンツ系(Jekyll、Octpress、Middleman)でやっていくか、前使ったことのあるMiddlemanでいくか、と思ったのですが、コンテンツ生成速度はhugoがとても速い、と評判なので今回はhugoを使ってみることにしました。
Hugoをインストールする
macであればbrew install
すればよいのですがLinuxなのでreleasesから最新版のバイナリをダウンロードしてきました。
必要に応じてURLやファイル名は変更する必要があります。
バイナリの配置先は/usr/local/bin/
にしており、既にpathが通っています。
hugo version
で動作確認を行い問題ないことが確認できました。
$ wget https://github.com/gohugoio/hugo/releases/download/v0.29/hugo_0.29_Linux-64bit.tar.gz
$ sudo tar -C /usr/local/bin/ -zxvf hugo_0.28_Linux-64bit.tar.gz hugo
$ rm hugo_0.28_Linux-64bit.tar.gz
$ hugo version
Hugo Static Site Generator v0.27.1 linux/amd64 BuildDate: 2017-09-13T20:04:10+09:00
スケルトン作成
まずはスケルトンを作成します。最低限必要なファイルやディレクトリが作成されます。
$ cd /path/to/dir/
$ hugo new site .
$ tree
.
├── archetypes
│ └── default.md
├── config.toml
├── content
├── data
├── layouts
├── static
└── themes
対象のディレクトリでgit init
した後だったので、下記のようなエラーが出ました。
already exists and is not empty
このため実際にはhugo new site . --force
を実行しています。.git
が上書きされることはありません。
生成されるファイル/ディレクトリの意味は下記の通りです。 archetypes以外のディレクトリは作成されますが空です。
- archetypes … contentのテンプレートを配置するディレクトリ
- config.toml … 設定ファイル
- content … 記事のmdファイルが配置されるディレクトリ。サブディレクトリを作成するとセクションとして認識される
- data … 複数ページで共通で使用するデータをデータファイルに記述して配置するディレクトリ
- layouts … レイアウトファイルを配置するディレクトリ
- static … .cssや.js等のスタティックなファイルを配置するディレクトリ
- themes … テーマを配置するディレクトリ
Themeを導入する
自分でテーマをゼロから作る手間を省きたかったので、Hugo Themesから気に入ったものを選びます。 今回はRobustを選びました。
公式のクイックスタートに則り、リポジトリへsubmoduleとして追加します。
ggるとcloneしてから.git
を削除するケースが見られますが、themeのアップデートに追従できる点や、自分のリポジトリへ他のリポジトリのコードを含めない点を考えるとsubmoduleで管理した方がよろしいと思います。
また、config.toml
へthemeの設定を記述することでビルド時等にthemeを明示的に指定しなくても済むようになります。これもggるとビルド時にパラメータを指定している例が散見されますが、ビルドする度に変更するような運用はしないと思うので、config.toml
へ記載する方が良いと思います。
git submodule add https://github.com/dim0627/hugo_theme_robust themes/robust
$ echo 'theme = "robust"' >> config.toml
ひとまずの動作確認
さて、このあたりで一度内容を確認してみたいのですが、記事が無いのであまり確認する要素がありません。 ということでダミーデータを登録してから、hugoの動作確認を行います。
下記コマンドでコンテンツを追加します。
$ hugo new post/2017/09/helloworld.md
/path/to/dir/content/helloworld.md created
architype/default.md
に従い、下記ファイルが生成されました。
titleは頭文字が自動的に大文字になっていますね。
$ cat content/post/2017/09/helloworld.md
---
title: "Helloworld"
date: 2017-09-27T21:36:39+09:00
draft: true
---
このファイルの末尾に適当な文字列を追記してから、下記コマンドを実行することで組み込みhttpサーバが1313/tcpで起動します。
このファイルはテスト用のコンテンツなので、今後本番環境では見れないようにしたいです。そういった場合はFrontMatter(ファイル先頭の---
で囲まれた部分)にdraft: true
と記述します。
hugo new site .
で生成されたアーキタイプでは、コンテンツ作成時のデフォルトはdraft: true
です。
単純にhugo server
するとdraft: true
のコンテンツはレンダリングされないので、-D
オプションを付けて起動します。
hugo server -D
themeが適用され、コンテンツのタイトルがトップページに表示されていれば動作確認は完了です。
この次は
ここまでで、ひとまずHugoを使う準備ができましたこの次は、テーマの調整など、細かい部分をカスタマイズしていきます。