メインコンテンツまでスキップ

exportPathMap (Deprecated)

この機能はnext exportに限定されており、現在はpagesでのgetStaticPathsまたはappでのgenerateStaticParamsを使用することが推奨されています。

exportPathMapを使用すると、エクスポート時に使用するリクエストパスとページの対応づけを指定できます。exportPathMapで定義されたパスはnext devを使用した際にも利用できます。

例を見てみましょう。次のページを持つアプリのカスタムexportPathMapを作成します:

  • pages/index.js
  • pages/about.js
  • pages/post.js

next.config.jsを開き、次のexportPathMap設定を追加します:

next.config.js
module.exports = {
exportPathMap: async function (
defaultPathMap,
{ dev, dir, outDir, distDir, buildId }
) {
return {
'/': { page: '/' },
'/about': { page: '/about' },
'/p/hello-nextjs': { page: '/post', query: { title: 'hello-nextjs' } },
'/p/learn-nextjs': { page: '/post', query: { title: 'learn-nextjs' } },
'/p/deploy-nextjs': { page: '/post', query: { title: 'deploy-nextjs' } },
}
},
}

Good to know: exportPathMap内のqueryフィールドは、自動的に静的最適化されたページやgetStaticPropsページと一緒には使用できません。これらはビルド時にHTMLファイルとしてレンダリングされ、next export中に追加のクエリ情報を提供できないためです。

その後、ページはHTMLファイルとしてエクスポートされます。例えば、/about/about.htmlになります。

exportPathMapは2つの引数を受け取るasync関数です:1つ目はNext.jsが使用するデフォルトのマップdefaultPathMapです。2つ目の引数は次のオブジェクトです:

  • dev - 開発中にexportPathMapが呼び出されるとtruenext exportを実行中はfalse。開発中にはexportPathMapはルートを定義するために使用されます。
  • dir - プロジェクトディレクトリへの絶対パス
  • outDir - out/ディレクトリへの絶対パス(-oで設定可能)。devtrueの場合、outDirの値はnullになります。
  • distDir - .next/ディレクトリへの絶対パス(distDir設定で変更可能)
  • buildId - 生成されたビルドID

返されるオブジェクトは、keypathnamevalueが次のフィールドを受け付けるオブジェクトであるページのマップです:

  • page: String - pagesディレクトリ内でレンダリングするページ
  • query: Object - プリレンダリング時にgetInitialPropsに渡されるqueryオブジェクト。デフォルトは{}です。

エクスポートされたpathnameは、ファイル名(例えば/readme.md)も可能ですが、そのコンテンツを提供する際に.htmlと異なる場合はContent-Typeヘッダーをtext/htmlに設定する必要があります。

トレーリングスラッシュを追加する

Next.jsを設定してページをindex.htmlファイルとしてエクスポートし、トレーリングスラッシュを必要にすることができます。/about/about/index.htmlになり、/about/でルーティング可能です。これはNext.js 9以前のデフォルトの挙動でした。

元に戻してトレーリングスラッシュを追加するには、next.config.jsを開き、trailingSlash設定を有効にします:

next.config.js
module.exports = {
trailingSlash: true,
}

出力ディレクトリをカスタマイズする

next exportはデフォルトの出力ディレクトリとしてoutを使用しますが、-o引数を使用してカスタマイズできます:

Terminal
next export -o outdir

Warning: exportPathMapの使用は推奨されておらず、pages内のgetStaticPathsによって上書きされます。これらを一緒に使用することは推奨されません。