Gatsbyを4系に更新した

2022-07-16

ブログのSSGに利用しているGatsbyをマイグレーション手順に従いGatsbyを3系から4系に更新した パッケージの依存関係が崩れる可能性があるので適宜ビルドできるか確認しながら進めたが、破壊的な変更はほとんどなくパッケージの更新で対応できた

Nodejs更新

Nodejs16、npm8に更新した CI/CDのランタイムも合わせて更新

Gatsby更新

Gatsby自身のバージョン更新

npm install gatsby@latest

下のように各プラグインのpeerDependenciesがgatsby3に依存しており、buildできない

warn Plugin gatsby-plugin-image is not compatible with your gatsby version 4.18.2 - It requires gatsby@^3.0.0-next.0

一つづつ依存を解消することは難しいため、npm-check-updatesを利用して一括でパッケージを更新

オプションなしの実行では差分のみ検出する

% npx npm-check-updates -u
Upgrading ~/work/github.com/kkenya/blog/package.json
[====================] 27/27 100%

 gatsby-plugin-feed               ^3.11.0  →  ^4.18.1
 gatsby-plugin-google-analytics   ^3.11.0  →  ^4.18.0
 gatsby-plugin-image              ^1.11.0  →  ^2.18.1
 gatsby-plugin-manifest           ^3.11.0  →  ^4.18.1
 gatsby-plugin-offline            ^4.11.0  →  ^5.18.1
 gatsby-plugin-react-helmet       ^4.11.0  →  ^5.18.0
 gatsby-plugin-sharp              ^3.11.0  →  ^4.18.1
 gatsby-remark-copy-linked-files   ^4.8.0  →  ^5.18.0
 gatsby-remark-images              ^5.8.0  →  ^6.18.1
 gatsby-remark-prismjs             ^5.8.0  →  ^6.18.0
 gatsby-remark-responsive-iframe   ^4.8.0  →  ^5.18.0
 gatsby-remark-smartypants         ^4.8.0  →  ^5.18.0
 gatsby-source-filesystem         ^3.11.0  →  ^4.18.1
 gatsby-transformer-remark         ^4.8.0  →  ^5.18.1
 gatsby-transformer-sharp         ^3.11.0  →  ^4.18.1
 prismjs                          ^1.24.1  →  ^1.28.0
 react                            ^17.0.1  →  ^18.2.0
 react-dom                        ^17.0.1  →  ^18.2.0
 typeface-merriweather             0.0.72  →   1.1.13
 typeface-montserrat               0.0.75  →   1.1.13
 prettier                           2.3.2  →    2.7.1
 textlint                         ^12.0.2  →  ^12.2.1
 textlint-rule-preset-jtf-style   ^2.3.12  →  ^2.3.13

Run npm install to install new versions.

-u オプションで package.json の書き換えを行う 実行後パッケージをインストール

npx npm-check-updates -u
npm install

依存パッケージの脆弱性をnpm-auditで修正する

npm audit fix

破壊的な変更

gatsby-plugin-gatsby-cloudでタイトルを設定していないためエラーになった Gatsby Cloudを利用しないためパッケージ自体を削除して対応


Web系ソフトウェアエンジニアの備忘録

Contact: 3982ne@gmail.com