exportPathMap
This feature is exclusive to
next export. Please refer to Static HTML export if you want to learn more about it.
Examples
exportPathMap allows you to specify a mapping of request paths to page destinations, to be used during export. Paths defined in exportPathMap will also be available when using next dev.
Let's start with an example, to create a custom exportPathMap for an app with the following pages:
pages/index.jspages/about.jspages/post.js
Open next.config.js and add the following exportPathMap config:
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' } },
}
},
}
Note: the query field in exportPathMap cannot be used with automatically statically optimized pages or getStaticProps pages as they are rendered to HTML files at build-time and additional query information cannot be provided during next export.
The pages will then be exported as HTML files, for example, /about will become /about.html.
exportPathMap is an async function that receives 2 arguments: the first one is defaultPathMap, which is the default map used by Next.js. The second argument is an object with:
dev-truewhenexportPathMapis being called in development.falsewhen runningnext export. In developmentexportPathMapis used to define routes.dir- Absolute path to the project directoryoutDir- Absolute path to theout/directory (configurable with-o). Whendevistruethe value ofoutDirwill benull.distDir- Absolute path to the.next/directory (configurable with thedistDirconfig)buildId- The generated build id
The returned object is a map of pages where the key is the pathname and the value is an object that accepts the following fields:
page:String- the page inside thepagesdirectory to renderquery:Object- thequeryobject passed togetInitialPropswhen prerendering. Defaults to{}
The exported
pathnamecan also be a filename (for example,/readme.md), but you may need to set theContent-Typeheader totext/htmlwhen serving its content if it is different than.html.
Adding a trailing slash
It is possible to configure Next.js to export pages as index.html files and require trailing slashes, /about becomes /about/index.html and is routable via /about/. This was the default behavior prior to Next.js 9.
To switch back and add a trailing slash, open next.config.js and enable the trailingSlash config:
module.exports = {
trailingSlash: true,
}
Customizing the output directory
next export will use out as the default output directory, you can customize this using the -o argument, like so:
next export -o outdir