Quiet

hexoのpwa化pluginが動かなかくなった話

# はじめに

まず初めに、このサイトは hexo という project を用いて作成されているのですが、その hexo には hexo-pwa
という物があり、これを使うことで簡単に pwa に対応することができます、ですが大本が既に更新されていない状態になっており 2020/12 月頃には既に動作しなかった覚えがありますが、
私はその fork である hexo-pwa を使わせていただいていました。ですが少し前に hexo v5.4.0
がリリースされました。これには依存関係の更新として js-yaml という物が含まれていました。そして js-yaml の更新で safeload がデフォルトで使用されるようになった
というのが今回の問題点です。そちらを理解しつつご覧ください。

# 直し方

はじめにでも言った通り、今回の不具合というかは js-yaml には safeload という機能があり、hexo-pwa ではそれを使用していました。README の config の書き方を引用してみましょう。

routes:
- pattern: !!js/regexp /hm.baidu.com/
strategy: networkOnly
- pattern: !!js/regexp /.*\.(js|css|jpg|jpeg|png|gif)$/
strategy: cacheFirst
- pattern: !!js/regexp /\//
strategy: networkFirst

引用元: https://github.com/lavas-project/hexo-pwa

このように書かれているわけですが、引用した yml にもある !!js/regexp という部分が safeload を使うという明言です、そして最初にも言った通り、safeload は js-yaml の更新で
デフォルトで使用するようになったわけですつまり、これは既に js-yaml では存在しない tag になったわけです、そしてエラーでは存在しない tag だという事を示唆しています。
なので !!js/regexp を削除し、以下のようにすると正常に動作します。

routes:
- pattern: /hm.baidu.com/
strategy: networkOnly
- pattern: /.*\.(js|css|jpg|jpeg|png|gif)$/
strategy: cacheFirst
- pattern: /\//
strategy: networkFirst

これらの点を変更し、依存関係を更新した fork を作成したので是非使ってみてください。 hexo-pwa

# 最後に

hexo はとても軽量で、便利な物ですが、plugin 等の多くは更新されていない事が多いです。他にも wordpress の用に多機能な plugin は少なく、
自分で作成するなどしないと使えない機能等があります。なので好き嫌いが分かれそうですが、好きという方で助かったという方がいれば幸いです。

前の投稿

ゆぴの日記 4月号