exportPathMap
Эта функция доступна только для
next exportи в настоящее время устарела в пользуgetStaticPathsсpagesилиgenerateStaticParamsсapp.
exportPathMap позволяет задать соответствие путей запросов целевым страницам, которое будет использоваться при экспорте. Пути, определённые в exportPathMap, также будут доступны при использовании next dev.
Начнём с примера: создадим пользовательский exportPathMap для приложения со следующими страницами:
pages/index.jspages/about.jspages/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' } },
}
},
}Полезно знать: поле
queryвexportPathMapнельзя использовать с автоматически статически оптимизированными страницами или страницами сgetStaticProps, так как они рендерятся в HTML-файлы во время сборки, и дополнительная информация запроса не может быть предоставлена во времяnext export.
Страницы будут экспортированы как HTML-файлы, например, /about станет /about.html.
exportPathMap — это async-функция, которая принимает 2 аргумента: первый — defaultPathMap (стандартное соответствие, используемое Next.js). Второй — объект со следующими свойствами:
dev—true, когдаexportPathMapвызывается в режиме разработки.falseпри выполненииnext export. В разработкеexportPathMapиспользуется для определения маршрутов.dir— абсолютный путь к директории проектаoutDir— абсолютный путь к директорииout/(настраивается с помощью-o). Когдаdevравноtrue, значениеoutDirбудетnull.distDir— абсолютный путь к директории.next/(настраивается с помощью конфигурацииdistDir)buildId— сгенерированный идентификатор сборки
Возвращаемый объект представляет собой соответствие страниц, где key — это pathname, а value — объект, который принимает следующие поля:
page:String— страница в директорииpagesдля рендерингаquery:Object— объектquery, передаваемый вgetInitialPropsпри предварительном рендеринге. По умолчанию{}
Экспортируемый
pathnameтакже может быть именем файла (например,/readme.md), но вам может потребоваться установить заголовокContent-Typeвtext/htmlпри обслуживании его содержимого, если оно отличается от.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устарело и переопределяетсяgetStaticPathsвнутриpages. Мы не рекомендуем использовать их вместе.