خيارات 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` لتكوين مصادر إضافية يمكنها طلب خادم التطوير.

assetPrefix

تعرف على كيفية استخدام خيار التكوين assetPrefix لتكوين شبكة توصيل المحتوى (CDN) الخاصة بك.

basePath

استخدم `basePath` لنشر تطبيق Next.js ضمن مسار فرعي لنطاق معين.

bundlePagesRouterDependencies

تمكين تجميع التبعيات التلقائي لموجه صفحات التطبيق (Pages Router)

ضغط

يوفر Next.js ضغط gzip لضغط المحتوى المعروض والملفات الثابتة، وهو يعمل فقط مع هدف الخادم. تعرف على المزيد حول هذا الموضوع هنا.

crossOrigin

استخدم خيار `crossOrigin` لإضافة وسم crossOrigin إلى وسوم `script` التي يتم إنشاؤها بواسطة `next/script` و `next/head`.

مؤشرات التطوير (devIndicators)

تتضمن الصفحات المُحسّنة مؤشرًا لإعلامك إذا كانت تخضع للتحسين الثابت (static optimization). يمكنك تعطيل هذا المؤشر هنا.

distDir

تعيين دليل بناء مخصص للاستخدام بدلاً من الدليل الافتراضي .next.

متغيرات البيئة (env)

تعرف على كيفية إضافة متغيرات البيئة والوصول إليها في تطبيق Next.js الخاص بك أثناء وقت البناء.

eslint

تقوم Next.js بالإبلاغ عن أخطاء وتحذيرات ESLint تلقائيًا أثناء عمليات البناء. تعرف هنا على كيفية إلغاء تفعيل هذا السلوك.

exportPathMap

تخصيص الصفحات التي سيتم تصديرها كملفات HTML عند استخدام `next export`.

generateBuildId

تكوين معرف البناء (build id) الذي يُستخدم لتحديد البناء الحالي الذي يتم تقديم تطبيقك من خلاله.

generateEtags

يقوم Next.js بإنشاء علامات etags لكل صفحة افتراضيًا. تعرف على المزيد حول كيفية تعطيل إنشاء etags هنا.

رؤوس (headers)

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

httpAgentOptions

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

الصور

التكوين المخصص لأداة تحميل الصور next/image

onDemandEntries

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

optimizePackageImports

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

output

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

pageExtensions

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

poweredByHeader

يُضيف Next.js رأس `x-powered-by` افتراضيًا. تعلم هنا كيفية إلغاء تفعيله.

productionBrowserSourceMaps

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

reactStrictMode

أصبح وقت تشغيل Next.js بالكامل متوافقًا مع الوضع الصارم (Strict Mode)، تعلم كيفية تفعيله

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

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

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

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

تكوين وقت التشغيل

إضافة تكوين وقت التشغيل للعميل والخادم إلى تطبيق Next.js الخاص بك.

serverExternalPackages

استثناء تبعيات محددة من عملية التجميع التلقائي التي يتم تمكينها بواسطة `bundlePagesRouterDependencies`.

trailingSlash

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

transpilePackages

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

turbo

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

TypeScript

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

استيرادات URL

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

useLightningcss

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

webpack

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

webVitalsAttribution

تعرف على كيفية استخدام خيار webVitalsAttribution لتحديد مصدر مشكلات Web Vitals.