Настройки next.config.js

Next.js можно настроить через файл next.config.js в корневой директории вашего проекта (например, рядом с package.json) с помощью экспорта по умолчанию.

next.config.js
// @ts-check

/** @type {import('next').NextConfig} */
const nextConfig = {
  /* здесь указываются параметры конфигурации */
}

module.exports = nextConfig

next.config.js — это обычный модуль Node.js, а не JSON-файл. Он используется сервером Next.js на этапах сборки и разработки, но не включается в сборку для браузера.

Если вам нужны модули ECMAScript, вы можете использовать next.config.mjs:

next.config.mjs
// @ts-check

/**
 * @type {import('next').NextConfig}
 */
const nextConfig = {
  /* здесь указываются параметры конфигурации */
}

export default nextConfig

Также можно использовать функцию:

next.config.mjs
// @ts-check

export default (phase, { defaultConfig }) => {
  /**
   * @type {import('next').NextConfig}
   */
  const nextConfig = {
    /* здесь указываются параметры конфигурации */
  }
  return nextConfig
}

Начиная с Next.js 12.1.0, можно использовать асинхронную функцию:

next.config.js
// @ts-check

module.exports = async (phase, { defaultConfig }) => {
  /**
   * @type {import('next').NextConfig}
   */
  const nextConfig = {
    /* здесь указываются параметры конфигурации */
  }
  return nextConfig
}

phase — это текущий контекст, в котором загружается конфигурация. Вы можете увидеть доступные фазы. Фазы можно импортировать из next/constants:

// @ts-check

const { PHASE_DEVELOPMENT_SERVER } = require('next/constants')

module.exports = (phase, { defaultConfig }) => {
  if (phase === PHASE_DEVELOPMENT_SERVER) {
    return {
      /* параметры конфигурации только для разработки */
    }
  }

  return {
    /* параметры конфигурации для всех фаз, кроме разработки */
  }
}

Закомментированные строки — это место, куда можно добавить параметры, разрешённые в next.config.js, которые определены в этом файле.

Однако ни один из параметров не является обязательным, и нет необходимости понимать, что делает каждый из них. Вместо этого найдите в этом разделе функции, которые вам нужно включить или изменить, и вы увидите, как это сделать.

Избегайте использования новых возможностей JavaScript, которые недоступны в вашей версии Node.js. next.config.js не обрабатывается Webpack, Babel или TypeScript.

На этой странице описаны все доступные параметры конфигурации:

assetPrefix

Узнайте, как использовать параметр конфигурации assetPrefix для настройки CDN.

basePath

Использование `basePath` для развертывания приложения Next.js в подкаталоге домена.

Сжатие (compress)

Next.js предоставляет сжатие gzip для сжатия рендеренного контента и статических файлов, работает только с серверной сборкой. Подробнее об этом здесь.

crossOrigin

Используйте опцию `crossOrigin` для добавления атрибута crossOrigin к тегам `script`, которые генерируются `next/script` и `next/head`.

Индикаторы разработки (devIndicators)

Оптимизированные страницы включают индикатор, который показывает, выполняется ли их статическая оптимизация. Здесь можно отключить этот индикатор.

distDir

Настройка пользовательской директории для сборки вместо стандартной директории .next.

Переменные окружения (env)

Узнайте, как добавлять и использовать переменные окружения в приложении Next.js во время сборки.

ESLint

Next.js по умолчанию сообщает об ошибках и предупреждениях ESLint во время сборки. Узнайте, как отключить это поведение.

exportPathMap

Настройка страниц, которые будут экспортированы как HTML-файлы при использовании `next export`.

generateBuildId

Настройка идентификатора сборки, который используется для определения текущей сборки, в которой обслуживается ваше приложение.

generateEtags

Next.js по умолчанию генерирует ETag для каждой страницы. Узнайте, как отключить генерацию ETag.

Заголовки (headers)

Добавление пользовательских HTTP-заголовков в ваше Next.js-приложение.

httpAgentOptions

Next.js по умолчанию автоматически использует HTTP Keep-Alive. Узнайте, как отключить HTTP Keep-Alive.

Изображения

Пользовательская конфигурация для загрузчика next/image

instrumentationHook

Использование опции instrumentationHook для настройки инструментирования в вашем Next.js приложении.

onDemandEntries

Настройка управления страницами в памяти при разработке в Next.js

optimizePackageImports

Справочник API для параметра конфигурации Next.js optmizedPackageImports

output

Next.js автоматически отслеживает, какие файлы нужны каждой странице, чтобы упростить развертывание приложения. Узнайте, как это работает.

pageExtensions

Расширение стандартных расширений страниц, используемых Next.js при разрешении страниц в Pages Router.

poweredByHeader

Next.js по умолчанию добавляет заголовок `x-powered-by`. Узнайте, как отключить его.

productionBrowserSourceMaps

Включает генерацию source maps для браузера во время production-сборки.

reactStrictMode

Полная среда выполнения Next.js теперь совместима со строгим режимом (Strict Mode). Узнайте, как включить эту функцию

Перенаправления (redirects)

Добавление перенаправлений в ваше приложение Next.js.

Переадресация (rewrites)

Добавление переадресации в ваше Next.js-приложение.

Конфигурация во время выполнения (Runtime Config)

Добавление клиентской и серверной конфигурации во время выполнения в ваше Next.js приложение.

trailingSlash

Настройка обработки страниц Next.js с завершающим слешем или без него.

transpilePackages

Автоматическая транспиляция и сборка зависимостей из локальных пакетов (например, в монорепозиториях) или внешних зависимостей (`node_modules`).

turbo

Настройка Next.js с параметрами, специфичными для Turbopack

TypeScript

Next.js по умолчанию сообщает об ошибках TypeScript. Узнайте, как отключить это поведение.

Импорт из URL (urlImports)

Настройка Next.js для разрешения импорта модулей из внешних URL (экспериментальная функция).

webpack

Узнайте, как настроить конфигурацию Webpack, используемую в Next.js

webVitalsAttribution

Узнайте, как использовать опцию webVitalsAttribution для определения источника проблем с Web Vitals.