exportPathMap
この機能は
next export
専用で、現在はpages
のgetStaticPaths
またはapp
のgenerateStaticParams
を優先するため非推奨です。
exportPathMap
を使用すると、エクスポート時に使用されるリクエストパスからページ宛先へのマッピングを指定できます。exportPathMap
で定義されたパスは next dev
使用時にも利用可能です。
以下のページを持つアプリケーションのカスタム exportPathMap
を作成する例から始めましょう:
pages/index.js
pages/about.js
pages/post.js
next.config.js
を開き、以下の exportPathMap
設定を追加します:
豆知識:
exportPathMap
のquery
フィールドは、自動静的最適化ページ やgetStaticProps
ページ では使用できません。これらはビルド時にHTMLファイルとしてレンダリングされるため、next export
時に追加のクエリ情報を提供できないからです。
ページはHTMLファイルとしてエクスポートされます。例えば /about
は /about.html
になります。
exportPathMap
は2つの引数を受け取る async
関数です。最初の引数は defaultPathMap
で、Next.jsが使用するデフォルトのマップです。2番目の引数は以下のプロパティを持つオブジェクトです:
dev
- 開発時にexportPathMap
が呼び出される場合はtrue
。next export
実行時はfalse
。開発時にはexportPathMap
がルート定義に使用されますdir
- プロジェクトディレクトリの絶対パスoutDir
-out/
ディレクトリの絶対パス(-o
で設定可能)。dev
がtrue
の場合、outDir
の値はnull
になりますdistDir
-.next/
ディレクトリの絶対パス(distDir
設定で設定可能)buildId
- 生成されたビルドID
返されるオブジェクトはページのマップで、key
は pathname
、value
は以下のフィールドを受け入れるオブジェクトです:
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 export
はデフォルトで out
を出力ディレクトリとして使用します。-o
引数を使用して以下のようにカスタマイズできます:
警告:
exportPathMap
の使用は非推奨であり、pages
内のgetStaticPaths
によって上書きされます。これらを一緒に使用することはお勧めしません。