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にプッシュするというサイクルでテーマを開発できるようになる。