Hugoのテーマをモジュール化する

2020年03月28日

Hugoのテーマをモジュール化する

なんとなくできたらいいなぐらいでやってみます

というより、やりましたの記事が無い(ドウシテ…
今回もDocker版Hugoでやっていきます
バイナリ版の場合はgoとgitを使える環境を整えましょう

git submodule のリポジトリを消す

先に消してしまいます

$ git submodule deinit -f src/themes/cleanwhite

-f PATHのところは各自のものに置き換えてください

$ rm -rf src/themes/

テーマフォルダも中身がないので消してしまいます

$ rm -f .gitmodules

他にsubmoduleを使うものも無いので消してしまいます

docker-compose.ymlの修正

HugoのDockerイメージは軽量版はモジュールを扱えないので対応版に変更します

version: '3'

services:
  hugo:
    container_name: hugo
    # image: peaceiris/hugo:v0.67.1
    image: peaceiris/hugo:v0.67.1-mod  # Hugo Modules
    ports:
# ~~ 以下略 ~~

config.tomlの修正

baseURL = "https://sublog.zinntikumugai.com/"
languageCode = "ja"
title = "さぶろぐ!"
# theme = "cleanwhite"

# ~~ 中略 ~~ 

[module]
    [[module.imports]]
    path="github.com/zhaohuabing/hugo-theme-cleanwhite"

まず、(おそらくどこでもいいと思いますが)末尾に利用するモジュールのリポジトリを追加します 今回はテーマのみなので一つですね
そして、theme=<テーマ名>を消します
このモジュールとして追加したテーマなんですが、どうも名前が変わってしまうのか、theme=<テーマ名>の記載があるときはローカルフォルダを見てしまうようで、そんなテーマはないと言われてしまいました

モジュールの初期化

最後に初期化をしないと動きません

$ docker-compose.exe run hugo mod init github.com/zinntikumugai/sublog

これはDocker版なのでバイナリ版は

$ hugo mod init リポジトリURL

リポジトリURLはこのプロジェクトのリポジトリ(サイトのリポジトリ)のURLを追加してください これを行うとgo.modというファイルが作成されます

動作

$ docker-compose up

をすると

git submoduleでやってたときのように動かすことができました
また、モジュールを取得するときにgo.sumというファイルも追加されました(チェックサム用のようです)

その他

モジュール関連のコマンドに

$ hugo mode vendor

という_vendorディレクトリにモジュールの依存関係を保存するコマンドがありますが、PHPのComposer的なやつかと思っていまいしたが、試したときはモジュールの外部読み込みがなくなるだけのようなのでこのブログにおいては必要なさそうです

参考

Techhugohugo modulesdockerdocker-compose

Quest(OculusLink) + Vive Tracker

Proxmox入れるときに手こずった

comments powered by Disqus