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, например:

Terminal
next export -o outdir

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