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
設定を追加します。
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' } },
}
},
}
**知っておくと便利**:
exportPathMap
のquery
フィールドは、自動的に静的に最適化されたページまたはgetStaticProps
ページでは使用できません。 これらのページはビルド時にHTMLファイルにレンダリングされるため、next export
中に追加のクエリ情報を提供することはできません。
ページはHTMLファイルとしてエクスポートされます。たとえば、/about
は/about.html
になります。
exportPathMap
は、2つの引数を受け取るasync
関数です。最初の引数は、Next.jsで使用されるデフォルトマップであるdefaultPathMap
です。 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
設定を有効にします。
module.exports = {
trailingSlash: true,
}
出力ディレクトリのカスタマイズ
next export
はデフォルトの出力ディレクトリとしてout
を使用します。これは、-o
引数を使用してカスタマイズできます。次のようにします。
next export -o outdir
警告:
exportPathMap
の使用は非推奨であり、pages
内のgetStaticPaths
によってオーバーライドされます。 これらを一緒に使用することはお勧めしません。
これは役に立ちましたか?