Опции 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` для указания дополнительных источников, которые могут запрашивать сервер разработки.

assetPrefix

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

basePath

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

bundlePagesRouterDependencies

Включение автоматической сборки зависимостей для Pages Router

Сжатие (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.

Заголовки

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

httpAgentOptions

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

Изображения

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

onDemandEntries

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

optimizePackageImports

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

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

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

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

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

serverExternalPackages

Исключение определенных зависимостей из автоматической сборки, включенной с помощью `bundlePagesRouterDependencies`.

trailingSlash

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

transpilePackages

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

turbo

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

TypeScript

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

urlImports

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

useLightningcss

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

webpack

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

webVitalsAttribution

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