Hugoのthemeを上書きできない問題

2020-10-06

hugo serverで確認しながらテーマの上書きを試みてるんだけど,全然上書きされない.
あれーと思って キャッシュを強制再読み込みする --ignoreCache を付けてサーバーを起動してみたら次のエラーが出た.

>hugo server --ignoreCache
Building sites … ERROR 2020/10/06 14:44:37 Transformation failed: TOCSS: failed to transform "css/main.scss" (text/x-scss): this feature is not available in your current Hugo version, see
https://goo.gl/YMrWcn for more information
Built in 501 ms
Error: Error building site: logged 1 error(s)


で,公式のヘルプを読む.
Frequently Asked Questions | Hugo
要約すると,Hugo は 2 バージョンあって,通常版と extended 版がある.Sass(css の拡張言語)に対応してるのは extended 版だけだからそっちにしてね.です.ちなみに,extended 版は少し重いらしい.あんまり気にならなかったけど.
ということでReleases · gohugoio/hugoからダウンロードして,Path を通してあった場所を探して,Hugo.exe だけ入れ替える.
はい!うまくいきました!
にしても,オプション付けないとエラーが出てもキャッシュから生成しちゃうのどうなの?



CSS のカスタマイズ

例えば/themes/assets/css/components/main.scssを上書きしたいとしたら,ファイルを/assets/css/main.scssにコピーして書き換えればよい.Hugo が自動で置き換えてくれるので,元のテーマを汚染する心配がなくなる.このサイトの theme は m10c というのを使っていて,themes/assets/css/_extra.scssを上書きしろと書いてあるので,/assets/css/_extra.scssに上書きしたい要素を追加していく.
例えばこんな感じで書けば,h2 だけ上書きして下線を描画できる

h2 {
  border-bottom: solid 1px $light-color;
  margin-top: 80px;
  margin-bottom: 30px;
}



フォントもカスタマイズ

Hugo の theme って日本のことはほとんど考えられていないので,フォントが微妙.なので,Noto Sans JP を導入する.
Noto Sans JP - Google Fontsで,追加したいフォントを選んで,selected family から Embed,@import 内の一文をコピーして,カスタム css 部分にコピペする.それから,body の font-family を上書きする.

@import url("https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@400;700&display=swap");

body {
  font-family: "Noto Sans JP", sans-serif;
}



レスポンシブデザイン

レスポンシブデザインっぽくしてみた. このテーマはモバイル向けではないので,なんとかスマホでも見るに堪えうるようにした. モバイル向けに footer を作ったんだけど,あまりきれいなコードではないので後で直す.



おわりに

なんとか読めるようなブログにはなったと思うので,次は画像の埋め込みや,twitter など外部埋め込みをよさげにしたい.
おわり