Next.js App RouterでSSGしたい

作成日

2024年8月7日

プロジェクトは作成済みとし,本記事ではファイル生成の方法を説明します.

Next.js で作成した Web サイトをホスティングサーバにアップロードすることが最終目的です.

App Router でのファイル生成

Pages Router では,Nuxt.js(Vue を用いたフレームワーク)などと同様に,SSG(Static Site Generation,静的ファイル生成)という用語が使われていました.

App Router では,SSG という用語は使わなくなり,Static Rendering と呼ばれるようになったようです.

設定

next.config.js
const nextConfig = {
  output: 'export',

  // Optional: Change links `/me` -> `/me/` and emit `/me.html` -> `/me/index.html`
  // trailingSlash: true,

  // Optional: Prevent automatic `/me` -> `/me/`, instead preserve `href`
  // skipTrailingSlashRedirect: true,

  // Optional: Change the output directory `out` -> `dist`
  // distDir: 'dist',
}

module.exports = nextConfig

outputexport とすると,ルートディレクトリ直下の out ディレクトリ下にファイル群が生成されます.ディレクトリ名は変更できます.

デフォルト設定では,URL の末尾に.html をつける形でアクセスする仕様になっているため,npm run dev の実行時と同様にルーティングするには,trailingSlashtrue にする必要があります.

参考:Deploying: Static Exports | Next.js

コマンド

上記のように設定し,いつも通りコマンドを実行します.

terminal
$ npm run build

テスト

生成後のファイルに問題ないか,レンダリングをテストするには,以下のコマンドを実行します.

terminal
$ npx serve@latest out

package.jsonに設定しておくと楽です.

最後に

動的にレンダリングするSSR(Server Side Rendering)に対して,SSGがあるという認識でしたが,発展が著しいようです.

参考:PPR - pre-rendering 新時代の到来と SSR/SSG 論争の終焉

mktia's note

Research & Engineering / Blockchain / Web Dev

© 2017-2025 mktia. All rights reserved.