خيارات next.config.js

يمكن تكوين Next.js من خلال ملف next.config.js في جذر دليل المشروع (على سبيل المثال، بجانب package.json).

next.config.js
/** @type {import('next').NextConfig} */
const nextConfig = {
  /* config options here */
}

module.exports = nextConfig

ملف next.config.js هو وحدة Node.js عادية وليس ملف JSON. يتم استخدامه بواسطة خادم Next.js ومراحل البناء، ولا يتم تضمينه في بناء المتصفح.

إذا كنت بحاجة إلى وحدات ECMAScript، يمكنك استخدام next.config.mjs:

next.config.mjs
/**
 * @type {import('next').NextConfig}
 */
const nextConfig = {
  /* config options here */
}

export default nextConfig

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

next.config.mjs
module.exports = (phase, { defaultConfig }) => {
  /**
   * @type {import('next').NextConfig}
   */
  const nextConfig = {
    /* config options here */
  }
  return nextConfig
}

منذ Next.js 12.1.0، يمكنك استخدام دالة غير متزامنة:

next.config.js
module.exports = async (phase, { defaultConfig }) => {
  /**
   * @type {import('next').NextConfig}
   */
  const nextConfig = {
    /* config options here */
  }
  return nextConfig
}

phase هو السياق الحالي الذي يتم فيه تحميل التكوين. يمكنك رؤية المراحل المتاحة. يمكن استيراد المراحل من next/constants:

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

module.exports = (phase, { defaultConfig }) => {
  if (phase === PHASE_DEVELOPMENT_SERVER) {
    return {
      /* development only config options here */
    }
  }

  return {
    /* config options for all phases except development here */
  }
}

الأسطر المعلقة هي المكان الذي يمكنك وضع التكوينات المسموح بها بواسطة next.config.js، والتي تم تعريفها في هذا الملف.

ومع ذلك، لا يوجد أي من التكوينات مطلوب، وليس من الضروري فهم ما يفعله كل تكوين. بدلاً من ذلك، ابحث عن الميزات التي تحتاج إلى تمكينها أو تعديلها في هذا القسم وسوف تظهر لك ما يجب القيام به.

تجنب استخدام ميزات JavaScript الجديدة غير المتوفرة في إصدار Node.js المستهدف. لن يتم تحليل next.config.js بواسطة Webpack أو Babel أو TypeScript.

توثق هذه الصفحة جميع خيارات التكوين المتاحة:

دليل appDir

تمكين موجه التطبيق (App Router) لاستخدام التخطيطات (layouts)، البث (streaming)، والمزيد.

assetPrefix

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

basePath

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

الضغط (compress)

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

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

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

distDir

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

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

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

eslint

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

exportPathMap

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

generateBuildId

تكوين معرّف البناء المستخدم لتحديد النسخة الحالية من التطبيق التي يتم تقديمها.

generateEtags

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

رؤوس HTTP

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

خيارات وكيل HTTP

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

الصور

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

incrementalCacheHandlerPath

تكوين ذاكرة التخزين المؤقت لـ 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`. تعلم كيفية تعطيله هنا.

productionBrowserSourceMaps

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

reactStrictMode

بيئة تشغيل Next.js بالكامل متوافقة الآن مع الوضع الصارم، تعلم كيفية التفعيل

إعادة التوجيهات

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

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

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

serverComponentsExternalPackages

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

trailingSlash

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

transpilePackages

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

turbo

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

typedRoutes

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

TypeScript

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

استيراد من عناوين URL

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

webpack

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

webVitalsAttribution

تعلم كيفية استخدام خيار webVitalsAttribution لتحديد مصدر مشكلات مؤشرات ويب فيتالز.