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的なやつかと思っていまいしたが、試したときはモジュールの外部読み込みがなくなるだけのようなのでこのブログにおいては必要なさそうです