GitHubで管理している自作のHugoテーマをモジュール化した。
しかし、Hugoテーマを修正するたびに、毎回プッシュしモジュールをアップデートする必要があり面倒である。
もっと、手軽にHugoテーマを改修できるようにしたい。
解決策
Hugoモジュールは、Go言語のモジュール機能を利用しており、
go.mod
ファイル内に、replace
ディレクティブを記載することにより、モジュールをローカルパスに置き換えることができる。
replace module-path [module-version] => replacement-path [replacement-version]
以下を例とした場合、
- サイト側:
- ローカルで管理しているHugoサイト モジュール名:
myblog
/Users/kanta/blog
- ローカルで管理しているHugoサイト モジュール名:
- モジュール側:
- GitHub上のテーマモジュール: モジュール名:
github.com/kantas-spike/kantas-theme
- ローカルファイルシステムに
github.com/kantas-spike/kantas-theme
をクローン/Users/kanta/hacking/products/002_kantas_theme
- GitHub上のテーマモジュール: モジュール名:
- やりたい事:
- サイト側で、参照しているテーマモジュールを、ローカルシステム上のテーマモジュールに切り替える
Hugoサイトで、Hugoテーマをインポートしているため、/Users/kanta/blog/go.mod
は以下のようになる。
module myblog
go 1.18
require github.com/kantas-spike/kantas-theme v0.0.0-20230928195921-52393738eda2 // indirect
Hugoテーマの参照先を、GitHub上でなはなく、ローカルファイルシステムに切り替えるために、go.mod
を以下に修正する。
module myblog
go 1.18
require github.com/kantas-spike/kantas-theme v0.0.0-20230928195921-52393738eda2 // indirect
// replaceによりモジュールの参照先を切り替える
replace github.com/kantas-spike/kantas-theme => /Users/kanta/hacking/products/002_kantas_theme
この状態でHugoサーバーをリスタートすれば、ローカルファイルシステム上のHugoテーマの修正が、 リアルタイムでブログに反映される。
これにより、Hugoサーバーでテーマの修正を確認し、修正が完了したところで、 GitHubにプッシュするというサイクルでテーマを開発できるようになる。