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