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:

next.config.js
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), второй — объект с:

  • devtrue, когда 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:

next.config.js
module.exports = {
  trailingSlash: true,
}

Настройка выходной директории

next export использует out как стандартную выходную директорию. Её можно изменить с помощью аргумента -o:

Терминал
next export -o outdir

Предупреждение: Использование exportPathMap устарело и переопределяется getStaticPaths внутри pages. Не рекомендуем использовать их вместе.