next.config.js

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

next.config.js
// @ts-check

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

module.exports = nextConfig

Модули ECMAScript

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

Важно знать: расширения .cjs, .cts или .mts для next.config в настоящее время не поддерживаются.

Конфигурация как функция

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

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)

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

next.config.js
// @ts-check

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

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

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

TypeScript

Если вы используете TypeScript в своем проекте, вы можете использовать next.config.ts для работы с TypeScript в конфигурации:

next.config.ts
import type { NextConfig } from 'next'

const nextConfig: NextConfig = {
  /* здесь указываются параметры конфигурации */
}

export default nextConfig

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

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

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

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

Юнит-тестирование (экспериментальное)

Начиная с Next.js 15.1, пакет next/experimental/testing/server содержит утилиты для юнит-тестирования файлов next.config.js.

Функция unstable_getResponseFromNextConfig запускает функции headers, redirects и rewrites из next.config.js с предоставленной информацией о запросе и возвращает NextResponse с результатами маршрутизации.

Ответ от unstable_getResponseFromNextConfig учитывает только поля next.config.js и не учитывает middleware или маршруты файловой системы, поэтому результат в продакшене может отличаться от юнит-теста.

import {
  getRedirectUrl,
  unstable_getResponseFromNextConfig,
} from 'next/experimental/testing/server'

const response = await unstable_getResponseFromNextConfig({
  url: 'https://nextjs.org/test',
  nextConfig: {
    async redirects() {
      return [{ source: '/test', destination: '/test2', permanent: false }]
    },
  },
})
expect(response.status).toEqual(307)
expect(getRedirectUrl(response)).toEqual('https://nextjs.org/test2')

allowedDevOrigins

Настройте дополнительные источники, которые могут запрашивать сервер разработки, с помощью `allowedDevOrigins`.

appDir

Включение маршрутизатора приложения (App Router) для использования макетов, потоковой передачи и других возможностей.

assetPrefix

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

authInterrupts

Узнайте, как включить экспериментальную опцию конфигурации `authInterrupts` для использования функций `forbidden` и `unauthorized`.

basePath

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

cacheLife

Узнайте, как настроить конфигурации cacheLife в Next.js.

Сжатие (compress)

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

crossOrigin

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

cssChunking

Используйте опцию `cssChunking` для управления разбиением CSS-файлов в вашем Next.js-приложении.

devIndicators

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

distDir

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

dynamicIO

Узнайте, как включить флаг dynamicIO в Next.js.

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

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

eslint

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

expireTime

Настройка времени истечения stale-while-revalidate для страниц с включенным ISR.

exportPathMap

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

generateBuildId

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

generateEtags

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

Заголовки

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

htmlLimitedBots

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

httpAgentOptions

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

Изображения

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

cacheHandler

Настройка кэша Next.js для хранения и обновления данных с использованием внешних сервисов, таких как Redis, Memcached и других.

inlineCss

Поддержка встроенных CSS-стилей.

Логирование

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

mdxRs

Использование нового компилятора Rust для компиляции MDX-файлов в App Router.

onDemandEntries

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

optimizePackageImports

Справочник API для опции конфигурации Next.js `optimizePackageImports`

output

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

pageExtensions

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

poweredByHeader

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

PPR (Partial Prerendering)

Узнайте, как включить частичный предварительный рендеринг (PPR) в Next.js.

productionBrowserSourceMaps

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

reactCompiler

Включение React Compiler для автоматической оптимизации рендеринга компонентов.

reactMaxHeadersLength

Максимальная длина заголовков, которые генерируются React и добавляются в ответ.

reactStrictMode

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

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

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

rewrites

Настройка переадресации (rewrites) в Next.js приложении.

sassOptions

Настройка параметров Sass.

serverActions

Настройка поведения Server Actions в вашем приложении Next.js.

serverComponentsHmrCache

Настройка кэширования ответов fetch в серверных компонентах при обновлениях через HMR.

serverExternalPackages

Исключение определенных зависимостей из бандлинга серверных компонентов и использование нативного Node.js `require`.

staleTimes

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

staticGeneration*

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

taint

Включение поддержки экспериментальных API React для пометки объектов и значений.

trailingSlash

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

transpilePackages

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

turbopack

Настройка Next.js с параметрами для Turbopack

typedRoutes

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

TypeScript

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

Импорт из URL

Настройка Next.js для разрешения импорта модулей из внешних URL-адресов.

useCache

Узнайте, как включить флаг useCache в Next.js.

useLightningcss

Включение экспериментальной поддержки Lightning CSS.

viewTransition

Включение ViewTransition API из React в App Router

webpack

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

webVitalsAttribution

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