Next.jsで静的サイトを生成する方法について

作成日:

本ページでは、Next.jsで静的サイトを生成する方法について解説します。

方法#

package.json の下記個所を

"scripts": {
    "dev": "next dev",
    "build": "next build",  // ここを書き換える
    "start": "next start",
    "lint": "next lint"
},

以下のように書き換えます。

"scripts": {
    "dev": "next dev",
    "build": "next build && next export",  // ここを書き換える
    "start": "next start",
    "lint": "next lint"
},

そしてこの状態で npm run build を実行することによって静的サイトが生成されます。

説明#

next export というコマンドは Next.js のプロジェクトを静的サイトとして出力するコマンドです。デフォルトでは out/ というディレクトリにファイルが生成されます。

生成するファイルの出力先を変更するには、 next export コマンドに -o を渡します

next export -o export/

注意事項#

静的ファイル生成は、表示するデータを事前にレンダリングしてHTMLにするため、JavaScriptを利用した幾つかの機能が利用できなくなります。

利用できなくなる機能については 公式ドキュメント をご確認ください。

特に、 <Image> コンポーネントを利用した動的な画像サイズ変更などはチュートリアルでもよく利用される技術ですが、利用に制限が出てくる場合もあるためご注意ください。

Netlify利用時の注意事項#

Netlifyを利用してNext.jsアプリを静的サイトとしてデプロイしたい場合、 NETLIFY_NEXT_PLUGIN_SKIP という環境変数を true に設定する必要がある。この設定をしていない場合ビルドでこけてしまうため注意。


関連記事:

Next.js
Netlify