Hugoをアップデートした

Posted by johtani on Friday, August 5, 2022

目次

Hugoを0.84から0.92にアップデートをする際に、これまでのブログ記事やレイアウトファイルを修正したので個人的にメモを残しておきます。

なんでアップデート?

うっかり魔がさして、メインのWSL2のUbuntuを20.04から22.04にアップグレードしました。。。 新規に22.04を落としてきて移行ではなく。 皆さんはまねしないほうがいいですよ! アップデートした後にGitの環境がおかしくなったりと大変でした。 WSL2のUbuntuではHugoでブログのビルド、いろんな確認のためのElasticsearchの起動、個人的なプログラムとかを書く環境として利用しています。

で、Ubuntuを上げたところ無事(?)Hugoもアップデートされたわけです。 最初はGitでfetchが出来なくなって修正していましたが、そのほかの動作確認を行なう段階でHugoでブログがビルドできなくなっていることが判明しました。

バージョンアップに伴う修正

hugoコマンドを実行すると、いくつかのERRORとWARNが出力されました。 次のようなものです。

hugo v0.92.2+extended linux/amd64 BuildDate=2022-02-23T16:47:50Z VendorInfo=ubuntu:0.92.2-1
ERROR 2022/08/05 13:22:32 Page.URL is deprecated and will be removed in Hugo 0.93.0. Use .Permalink or .RelPermalink. If what you want is the front matter URL value, use .Params.url
WARN 2022/08/05 13:22:32 The "tweet" shortcode will soon require two named parameters: user and id. See "/home/johtani/blog_generator/content/post/2020/2020-12-04-build_corne_choc.md:46:1"
...
ERROR 2022/08/05 13:22:33 Failed to get JSON resource "https://publish.twitter.com/oembed?dnt=fa...
If you feel that this should not be logged as an ERROR, you can ignore it by adding this to your site config:
ignoreErrors = ["error-remote-getjson"]
ERROR 2022/08/05 18:44:11 Page.UniqueID is deprecated and will be removed in Hugo 0.93.0. Use .File.UniqueID
ERROR 2022/08/05 18:44:11 Page.Dir is deprecated and will be removed in Hugo 0.93.0. Use .File.Dir

Page.URLなどがdeprecatedに

最初と最後2行のERRORがこちらになります。 どうやら、Pageオブジェクトの変数に変更があったようです(まだdeprecatedであり、存在はしていそう?)。 レイアウト(テンプレート)ファイルで「Previous Post」や「Next Post」といったリンクを作ったり、 Algoliaに登録するためのJSONファイルを生成するところでURL文字列を取得するために参照していました。

ログ出力でどのように変更すればよいのか?という記載があるので便利ですね。 ただ、どのファイルにこの記述があるのかはログに出てなかったので少しだけ苦労しました。

実際には「UniqueID」という文字列でディレクトリ内を検索してあたりを付けた感じです。 利用させていただいているテーマ(Clean White)がすでにアップデートに対応されていたのでそちらが参考になりました。

いくつか、テーマをもとに修正したテンプレートがlayoutsディレクトリにあったので、それらを修正した形です(参考のリンクはテーマのファイルになります)。

tweetのshortcodeの引数が増えた

これまでは以下のようにIDだけで良かったのですが、useridという2つの引数が必須になるという変更が入ったようです。

変更前:

{{ <tweet 1449214872143609860> }}

変更後:

{{ <tweet user="johtani" id="1449214872143609860"> }}

WARNにはファイル名、行番号が出力されていたので、1つずつ修正していきました。 結構な量があったので、地味に大変でした、 公開しているブログを見ながら、該当するツイートを見つけてはuserを指定していく部分が特に。 自分のツイート以外もブログに貼っていたので画一的には対処できなくて。。。

なにかプログラムで機械的に対応ができたかもなぁ。

鍵付きツイートによるエラー

tweetのshortcode対応を行なった後でもビルドがエラーになっており、次のようなエラーが消えないままでした(エラーの一部は省略しています)。 (幸いにも)1つのツイートだけ、ブログ記事を書いた後で鍵付きになってしまった方のツイートがあったようで、ツイート用のJSONが取得できなくてエラーになっていました。

ERROR 2022/08/05 13:22:33 Failed to get JSON resource "https://publish.twitter.com/oembed?dnt=fa...
If you feel that this should not be logged as an ERROR, you can ignore it by adding this to your site config:
ignoreErrors = ["error-remote-getjson"]

こちらもログに対処方法が出ています。 config.tomlignoreErrors = ["error-remote-getjson"]を追加すれば、エラーが出力されなくなりビルドも成功するようになります。 ただ、tweet以外でもエラーが出る可能性がありそうで、その場合に、ブログに書いたつもりが一部が出力されないまま公開されそうな気がします。 なので、今回はconfig.tomlに該当の設定を追加するのではなく、ブログ記事から該当のツイートを消す対応をしました。 幸いにも、ツイートを消してもブログ記事自体には影響がありませんでした。

.hugo_build.lockファイルが生成される

これは、エラーではないのですがgit addしようとした際に、ファイルが増えていたのでどういったファイルなのかを調べました。 0.89.0から追加されたロックファイルのようです(参考:0.89.0のリリースノート)。 こちらは特に保管する必要もなさそうなので.gitignoreに追加して対処しました。

まとめ

ということで、気軽にUbuntuをアップグレードしないほうがいいですね。。。 期せずしてHugoのアップグレードができたのは良かったかもなw

参考


comments powered by Disqus

See Also by Hugo


Related by prelims-cli