移行しました。といっても元々ペライチのページだし、とくに自明じゃないことはやっていないと思います。
前提
- Next.js 12.1.6
- Static HTML ExportをしたものをNetlifyにデプロイしている
- リダイレクト設定がある
やったこと
ライブラリを最新にする
ライブラリが古びていたのでまずはバージョンを上げました。メジャーバージョンアップ上等で、ぱっと見で明らかに壊れていないならいいでしょう、という方針で進めました。VSCodeのformat on saveにもprettierを使っているはずですが、format on saveと prettier --write
でコードの整形結果が違う*1のを目撃したけど、見なかったことにします。
Node.jsのバージョンを .node-version
ファイルで16にpinしていたら古いよ、と言われてNetlifyでのビルドに失敗したので .node-version
ファイルを消したらNode.js 12 (!?) が使われてしまいました。ビルド時に NODE_VERSION
環境変数をセットすることで解決しました。なんかデフォルトでいい感じのLTSバージョンが使われてほしいけどこういう感じなのか?
target: "serverless"
は使えない、と言われたので消したけどふつうに動いていそうです。
App Routerに移行する
ライブラリが最新になったので移行をやっていきます。とはいっても公式ドキュメントのガイドに従っていけばおおむね移行できます。最初はこの移行ガイドも見ていなくて、雰囲気でファイルを用意していったけどなんとかなりました。
next.config.jsで output: "export"
を指定すると手元環境向けのリダイレクト設定を redirects
フィールドに書けないのでどうしたものか、と思っていたのですがビルドフェーズを見ることで手元環境向けの設定とビルド時の設定を分けて書けるようでした。リダイレクトはNetlify側の設定でやっているので手元で動けばじゅうぶんです。
CSSをimportするのもふつうに動いていそうです。
感想
pageコンポーネントが非同期関数になっていて、おもむろにfetchできるのがかっこいいですね。
*1:format on saveだと末尾カンマが入らない