Hugo における static フォルダとビルド

Hugo における static ディレクトリの挙動についてまとめ,どのように使うかを考える。


このウェブサイトは Hugo で作っている。Hugo にはいくらか癖があり,content ディレクトリと static ディレクトリがビルドにあたって処理されるときのタイムスタンプもその一つである。

まず,Hugo では変換処理を求めないファイルは static ディレクトリに置くことになっている。この例外として,記事ごとにファイルを管理するための page bundle という仕組みがあるが,これは勧めない。試したところ,page bundle 内のファイルがコピーされるにあたってタイムスタンプが新しくなってしまう。つまり,ミラーリングアップロードにおいて,ファイルサイズを見ずに日付だけを見る設定にしていれば,ビルドのたびにアップロードすることになってしまう。一方,static ディレクトリであればそのようなことは起こらない。

では,static ディレクトリに置けばすべて上手くゆくかというとそうでもない。私は生徒向けに講義資料を載せる会員制ページを運用しているが,そのビルドに時間がかかるようになってきた。おそらく,static ディレクトリにある大量の PDF ファイルを都度見ているのではないかと思われる。タイムスタンプは変わらないのでミラーリングアップロードでは無視してもらえるが,ビルドに負荷をかけるようではいただけない。

そこで,思い切って PDF ファイルは Hugo に任せずに直接 FTP でアップロードし,そこへリンクすることとしたい。これならば,Hugo が扱うのは軽い .md ファイルがほとんどのままになるだろう。そもそも static ディレクトリ内でバイナリファイルは扱っていたのだから,何かが大きく変わるわけでもない。もちろん,URL のルールと同じように,まずは年度で切ることとする。ファイル名の重なりも減らせるし,同じ趣旨の資料を(同じ授業をふたたび持つなどして)書きなおすことも年度ごとには起こりうるだろう。