メインコンテンツへスキップ

Hugo で blog サイトの作成: 環境構築編

·

構築手順の概要 #

前回の投稿 の方針に従って、下記の手順で準備する。

  1. Windows PC 執筆環境
    1. 事前準備
    2. Hugo のアプリをインストール
    3. Hugo サイト (フォルダ) を作成
    4. Hugo テーマインストール
    5. Hugo テーマ有効化
    6. 新しい記事フォルダの配置
    7. 記事を書く
    8. 執筆用 Windows PC で blog 表示テスト
  2. GitHub 連携
    1. Hugo ビルド用のサイトで git 初期化
    2. GitHub リポジトリに commit + Push
  3. Netlify サイト公開
    1. Netlify 初回登録
    2. Netlify と GitHub を連携
    3. Netlify でビルド確認
    4. blog 公開設定 (DNS)

Windows PC 執筆環境 #

事前準備 #

執筆環境として、Visual Studio Code をインストールしておく。 最近では winget コマンドを使うことで簡単にインストールできる。

winget install Microsoft.VisualStudioCode

Hugo の執筆用に下記の拡張機能のインストールも推奨。

Hugo アプリのインストール #

winget コマンドでインストール

winget install Hugo.Hugo.Extended

バージョンの確認

PS C:\> hugo version
hugo v0.132.2-3fd26c70dff5934ec1802b9563530130ed1bca75+extended windows/amd64 BuildDate=2024-08-14T16:17:21Z VendorInfo=gohugoio

Hugo サイト (フォルダ) を作成 #

作業用フォルダに等に Hugo 用フォルダ構造を作成する。Dropbox 管理下に置きたかったので、下記のように指定した。

cd "${env:USERPROFILE}\Dropbox"
hugo new site blog

成功した場合は Congratulations! と表示される。

Congratulations! Your new Hugo site was created in C:\Users\XXXX\Dropbox\blog.

Just a few more steps...

1. Change the current directory to C:\Users\XXXX\Dropbox\blog.
2. Create or install a theme:
   - Create a new theme with the command "hugo new theme <THEMENAME>"
   - Or, install a theme from https://themes.gohugo.io/
3. Edit hugo.toml, setting the "theme" property to the theme name.
4. Create new content with the command "hugo new content <SECTIONNAME>\<FILENAME>.<FORMAT>".
5. Start the embedded web server with the command "hugo server --buildDrafts".

See documentation at https://gohugo.io/.

初期状態のフォルダ構造 (Hugo 0.132.2時点) #

公式ドキュメント: Directory structure

blog/            # Hugoサイトトップフォルダ
  |- archetypes/
  |- assets/
  |- content/    # 記事ファイル群の配置
  |- data/
  |- i18n/
  |- layouts/
  |- static/     # 静的ファイル (カスタムCSSや画像ファイル等)
  |- themes/     # Hugoテーマ配置フォルダ
  |- hugo.html   # 設定ファイル

ビルド後に追加されるフォルダ #

サイト公開する際は、ビルド後に public 以下のみを Web サーバにコピーすればよい。

blog/
  |- public/     # Web公開用フォルダ Web
  |- resources/

git 初期設定 #

Hugo サイト全体を git 管理するため、初期化する。

cd "${env:USERPROFILE}\Dropbox/blog"
git init
# 初回の空コミットをしておく
git commit --allow-empty -m "first commit"

Hugo テーマインストール #

Hugo のテーマサイト からお好みのテーマを探し、Hugo サイトフォルダ配下に配置する。Git 管理にしたいので、下記のとおり subtree として展開する。

サンプルテーマの導入例

git remote add thenewdynamic-ananke https://github.com/theNewDynamic/gohugo-theme-ananke
git subtree add --prefix themes/ananke --squash thenewdynamic-ananke master

git submodule でテーマを展開すると紹介している hugo 構築記事もあるが、場合によってはテーマ構造に手を入れる必要があるため git subtree の方が向いている。

Hugo 設定ファイル #

初期設定例: hugo.toml

baseURL = 'https://example.org/'
title = 'New Hugo サイト'
languageCode = 'ja_jp'           # 日本語対応
defaultContentLanguage = "ja"    # 日本語対応
theme = "ananke"                 # テーマ名を指定
hasCJKLanguage = true            # 日本語対応

[Params]
  date_format = "2006/01/02(Mon)"

Hugo設定ファイル補足 #

記事を書く #

基本的に content フォルダ以下に *.md ファイルを書いていけば認識されるのだが、特に固定されたファイル配置パターンはないらしい。

保守性を考えて、本 blog では下記の構造で構成することにした。

blog/
  |- content/
    |- posts/
      |- YYYYMMDD-TOPIC1  # 記事1フォルダ
        |- index.md   # 記事1本体の MarkDown ファイル
        |- xxxxx.jpg  # 記事1に貼り付ける画像
        |- xxxxx.png  # 記事1に貼り付ける画像
      |- YYYYMMDD-TOPIC2  # 記事2フォルダ
        |- index.md   # 記事2本体の MarkDown ファイル
        |- xxxxx.jpg  # 記事2に貼り付ける画像
        |- xxxxx.png  # 記事2に貼り付ける画像
    |- privacy.md  # サイト全体で固定の記事など
  • 記事ごとにフォルダをわけることで、記事から参照される関連画像とひとまとめにしておく
  • フォルダ名に日付を入れることにより、記事の古い順にフォルダがソートされる
    • URL にも日付が含まれるため、記事の古さが明確になる
  • フォルダ名にトピック名を付記することで、URL 名だけでなんの記事か推測できるようにする
  • 1階層のみのフォルダとし、管理をシンプルにする
    • 記事をジャンル分けしたい場合は、タグ機能を利用する

記事フォルダを追加 #

記事を書き始める際は、hugo new で記事フォルダを構成する。

cd (BLOGトップフォルダ)
hugo new (記事フォルダ)/index.md

実行例:

cd "${env:USERPROFILE}\Dropbox\blog"
hugo new posts/20240818-test/index.md

テンプレートに従ってひな形の index.md が自動作成される。

記事の執筆 #

index.md は下記の構造になっている。(TOML構造の場合)

---
+++
(Front Matterセクション)
title = '20240818 Test'
date = 2024-08-18T19:59:42+09:00
draft = true
...
+++

(本文)

Front Matter セクションには記事ごとの固有情報を追記する。デフォルトは draft が true なので、下書き記事として認識され、public には配置されない。

本文は MarkDown 記法でエディタで記事を書いてゆく。