ملف 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

معلومة مفيدة: امتدادات next.config مثل .cjs أو .cts أو .mts غير مدعومة حاليًا.

التكوين كدالة

يمكنك أيضًا استخدام دالة:

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:

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) لاستخدام التخطيطات (layouts)، البث (streaming)، والمزيد.

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 إلى أجزاء (chunks) في تطبيق 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

إضافة رؤوس HTTP مخصصة لتطبيق Next.js الخاص بك.

htmlLimitedBots

تحديد قائمة بوكلاء المستخدم الذين يجب أن يتلقوا بيانات وصفية حاجزة.

خيارات وكيل HTTP

سيقوم Next.js تلقائيًا باستخدام HTTP Keep-Alive افتراضيًا. تعرف على المزيد حول كيفية تعطيل HTTP Keep-Alive هنا.

الصور

تهيئة مخصصة لأداة تحميل next/image

cacheHandler

تكوين ذاكرة التخزين المؤقت لـ Next.js المستخدمة لتخزين وإعادة التحقق من البيانات لاستخدام أي خدمة خارجية مثل Redis أو Memcached أو غيرها.

inlineCss

تمكين دعم CSS المضمن.

تسجيل البيانات (logging)

تكيف كيفية تسجيل عمليات جلب البيانات في وحدة التحكم عند تشغيل Next.js في وضع التطوير.

mdxRs

استخدام المترجم الجديد المكتوب بلغة Rust لترجمة ملفات MDX في App Router.

onDemandEntries

تكوين كيفية تعامل Next.js مع التخلص من الصفحات أو الاحتفاظ بها في الذاكرة أثناء التطوير.

optimizePackageImports

مرجع API لخيار تكوين optimizePackageImports في Next.js

output

يتتبع Next.js تلقائيًا الملفات المطلوبة لكل صفحة لتمكين نشر تطبيقك بسهولة. تعرف هنا على كيفية عمل هذه الميزة.

pageExtensions

توسيع امتدادات الصفحات الافتراضية المستخدمة بواسطة Next.js عند تحليل الصفحات في موجه الصفحات (Pages Router).

poweredByHeader

بإعداداتها الافتراضية، يضيف Next.js رأس `x-powered-by`. تعلم هنا كيفية تعطيله.

التصيير الجزئي المسبق (PPR)

تعرف على كيفية تمكين التصيير الجزئي المسبق في Next.js.

productionBrowserSourceMaps

تمكين إنشاء خرائط المصدر (source maps) في المتصفح أثناء عملية بناء الإنتاج.

reactCompiler

تمكين مترجم React لتحسين عرض المكونات تلقائيًا.

reactMaxHeadersLength

الحد الأقصى لطول الرؤوس (headers) التي يصدرها React ويتم إضافتها إلى الاستجابة.

reactStrictMode

الآن وقت تشغيل Next.js بالكامل متوافق مع وضع الصارم (Strict Mode)، تعرف على كيفية الاشتراك

إعادة التوجيه (redirects)

إضافة إعادة التوجيه إلى تطبيق Next.js الخاص بك.

إعادة التوجيه (rewrites)

إضافة إعادة توجيه (rewrites) إلى تطبيق Next.js الخاص بك.

sassOptions

تكوين خيارات Sass.

serverActions

تكوين سلوك إجراءات الخادم (Server Actions) في تطبيق Next.js الخاص بك.

serverComponentsHmrCache

تكوين ما إذا كانت استجابات جلب البيانات (fetch) في مكونات الخادم (Server Components) مخزنة مؤقتًا عبر طلبات تحديث HMR.

serverExternalPackages

استثناء تبعيات محددة من تجميع مكونات الخادم واستخدام الوظيفة الأصلية `require` في Node.js.

staleTimes

تعلم كيفية تجاوز وقت إبطال ذاكرة التخزين المؤقت لموجه العميل (Client Router Cache).

staticGeneration*

تعرف على كيفية تكوين التوليد الثابت (Static Generation) في تطبيق Next.js الخاص بك.

تلويث (taint)

تمكين تلويث الكائنات والقيم.

trailingSlash

تكوين صفحات Next.js للتعامل مع الشرطة المائلة في نهاية الرابط أو بدونها.

transpilePackages

تحويل وتجميع التبعيات تلقائيًا من الحزم المحلية (مثل monorepos) أو من التبعيات الخارجية (`node_modules`).

turbopack

تكوين Next.js مع خيارات خاصة بـ Turbopack

typedRoutes

تمكين الدعم التجريبي للروابط ذات الكتابة الثابتة (statically typed links).

TypeScript

يقدم Next.js تقارير بأخطاء TypeScript بشكل افتراضي. تعلم هنا كيفية إلغاء تفعيل هذا السلوك.

استيراد من الروابط (urlImports)

تكوين Next.js للسماح باستيراد الوحدات من روابط خارجية.

useCache

تعرف على كيفية تمكين علامة useCache في Next.js.

useLightningcss

تمكين الدعم التجريبي لـ Lightning CSS.

viewTransition

تمكين واجهة برمجة التطبيقات ViewTransition من React في App Router

webpack

تعلم كيفية تخصيص تهيئة webpack المستخدمة من قبل Next.js

webVitalsAttribution

تعرف على كيفية استخدام خيار webVitalsAttribution لتحديد مصدر مشكلات مؤشرات ويب الأساسية (Web Vitals).