exportPathMap
Эта функция доступна только для
next export
и в настоящее время устарела в пользуgetStaticPaths
сpages
илиgenerateStaticParams
сapp
.
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' } },
}
},
}
Полезно знать: поле
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
. Мы не рекомендуем использовать их вместе.