Hugoはじめ

Hugoとは

静的サイトジェネレーター、つまりブログとかのウェブサイトを簡単に生成できるやつ。 Go言語でできています。

とりあえず使ってみようという時に気をつけなければいけないのが、Hugoはデフォルトのテーマみたいなのは無いということです。 何かしらテーマを指定しないと何も表示されないので、気に入ったテーマを探してきて/themes以下に置く必要があります。 テーマはHugo Themes | Complete Listで探すと良さげ。 いい感じのテーマを見つけたら/themes以下にcloneして、config.toml内にtheme = "テーマ名"と記述すればそのテーマを利用できます。

hugoはbrewとかapt-getでも入るらしいので自分の環境に合わせて落としてください。 Linuxならクロスプラットフォームバイナリがあるので、hugoをダウンロードしてきてパス通した場所に置けばすぐ使えます。 https://gohugo.io/getting-started/installing/

hugo new site ブログ名でブログ自体を新しく作成し、hugo new ファイル名/content以下に記事のファイルが作成されます。 慣例的に/content/post以下に投稿していくのでhugo new post/post_title.mdって感じになると思います。

$hugo new site blog_name
$cd blog_name
$hugo new post/post_title.md
$tree
.
├── archetypes
│   └── default.md
├── config.toml
├── content
│   └── post
│       └── post_title.md
├── data
├── layouts
├── static
└── themes

まぁQuick Startの方がわかりやすいです。…丸投げ。

ローカルで書いたポストを確認したい場合は$ hugo server -Dwってやればhttp://localhost:1313をブラウザでアクセスすることでどう見えるかわかります。 オプションにwをつければリアルタイムに変更が適用され、Dをつければ下書きも表示できるようになります。

$ hugo undraft content/post/title.mdってやるとヘッダのdraft: trueが消えてdateの部分も現在の時間に更新されます。

デプロイ

リポジトリにpushしたら自動的に更新される感じにしたいな〜 つーこってwercker使ってデプロイ環境も整備しました。

wercker.ymlはこんな感じ

box: debian
build:
  steps:
    - script:
        name: install git
        code: |
            apt-get update
            apt-get install -y git

    - script:
        name: clone theme
        code: git clone https://github.com/yoshiharuyamashita/blackburn.git ./themes/blackburn

    - arjen/hugo-build:
        version: "0.26"
        theme: blackburn
        flags: --buildDrafts=false

deploy:
  steps:
    - install-packages:
        packages: ssh-client
    - add-ssh-key:
          keyname: HUGO
    - add-to-known_hosts:
        hostname: example.com
    - script:
        name: show data
        code: ls -la public
    - script:
        name: transfer data
        code: scp -v -o StrictHostKeyChecking=no -o UserKnownHostsFile=no -r ./public user@example.com:~/hugo

実は今回初めてwerckerを触ったので、あんまり良くない書き方してるかもしれません。 これでとりあえずリポジトリにpushしたら自動的に公開できるようになりました。らくちん。

てな感じでブログをやってこうと思いまーす