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
— это асинхронная функция, которая принимает 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
. Не рекомендуем использовать их вместе.