next.config.jsで設定することのまとめ
TL;DR
next.jsを使っているとnext.config.jsを使って設定をカスタマイズすることが多いです。next.config.jsで設定できることと、その設定の仕方についてまとめておきます。
基本
next.config.js
のようにconfigをオブジェクト形式でエクスポートする。
reactStrictMode
Strict Modeを使用でき、嬉しい。
redirect
リダイレクトの設定をかける。redirects関数を定義して、設定を書いた配列を返す。
next.config.js
assetPrefix
JavaScriptとCSSを読み込む先を変える。DEFAULTでは、/_next/static/を読みに行くが、以下の例では、https://cdn.mydomain.com/_next/static/を読み込みにいく。
next.config.js
publicRuntimeConfig, serverRuntimeConfig
getConfigを使うことで、ページやコンポーネントで使いたい変数を定義できる。2種類の使い分けは以下。
- publicRuntimeConfig: Server or Client
- serverRuntimeConfig: Server only
next.config.js
root (/) 以外のパスを使うときなどにも使用できる。例えば、basePathをpublicRuntimeConfigで設定すれば、以下のようにLinkコンポーネントを定義できる。
webpack
webpackのwebpack.config.js的な話ができる。configがwebpackのconfigオブジェクトのような感じ。
Next.jsのversionを11.0.0にするとwebpack5が基本的に使われるようになる。この辺はwebpack5に真偽値を入れることで設定できる。
また、webpack5からエイリアスが自前で設定できるようになっている。
next.config.js
webpack5にしたとき、
というエラーが出て困っていたが、このissueのとおりに
にしたら治った。治ったが、webpack5のドキュメント読むとfallbackの機能は
Redirect module requests when normal resolving fails.
なので、読み込まないようにしているだけの可能性がある。next buildは動くので多分大丈夫問題ないと思われるが、target: 'node'とかを使った方が妥当な可能性もある。