gatsby-plugin-sharp と gatsby-plugin-manifest のアップデートでつまずいた
gatsby-plugin-sharp と gatsby-plugin-manifest のアップデートの際にエラーが発生したが、なんとか解消できたので として残しておく。
発生した問題
gatsby-plugin-sharp のアップデートPR( Bump gatsby-plugin-manifest from 2.2.47 to 2.3.1 ) と、gatsby-plugin-manifest のアップデート PR (Bump gatsby-plugin-sharp from 2.4.11 to 2.5.1) で以下のようなエラーが出た。
error "gatsby-plugin-manifest" threw an error while running the onPostBootstrap lifecycle:
Input file contains unsupported image format
Error: Input file contains unsupported image format
not finished onPostBootstrap - 0.014s
エラーの issue を追いかけた
エラーメッセージでググると、https://github.com/gatsbyjs/gatsby/issues/22303 にあたった。その中のコメントで、libvips/libvips#1539 のリンクに言及されていたのでそちらを確認した。
その中で、lovell/sharp#2062 のリンクに言及しており、コメント で breaking change があったことがわかる。v0.24.0 以上の sharp が必要とな?
taniarascia/taniarascia.com#103 からこの issue が参照されていて、その中のコメント に解決策が提示されていた。
この解決策のコメントの中にあった、resolutions の設定を package.json に追記したところ、エラーが解消され、ビルドがうまくいくようになった。
package.json の resolutions について
pacakge.json の resolutions を使ったことがなかったのでぐぐってみたら、 https://classic.yarnpkg.com/ja/docs/selective-version-resolutions/ がわかりやすかった。
依存パッケージのバージョンを横から指定できるのか。依存パッケージの一部に脆弱性が見つかったりした場合に、これを使って強引にパッチのあたったバージョンにアップデートさせる、というような使い方できるっぽい。これは勉強になった
結論
今回は package.json の resolutions に sharpt のバージョンを "^0.24.1"
として指定することでエラーを回避した。
resolutions については、https://classic.yarnpkg.com/ja/docs/selective-version-resolutions/ を参照のこと。