exportPathMap

هذه الميزة حصرية لـ next export وهي حاليًا غير موصى بها لصالح getStaticPaths مع pages أو generateStaticParams مع app.

يسمح لك exportPathMap بتحديد تعيين مسارات الطلبات إلى وجهات الصفحات، لاستخدامها أثناء التصدير. المسارات المحددة في exportPathMap ستكون متاحة أيضًا عند استخدام next dev.

لنبدأ بمثال، لإنشاء exportPathMap مخصص لتطبيق به الصفحات التالية:

  • pages/index.js
  • pages/about.js
  • pages/post.js

افتح next.config.js وأضف تكوين exportPathMap التالي:

next.config.js
module.exports = {
  exportPathMap: async function (
    defaultPathMap,
    { dev, dir, outDir, distDir, buildId }
  ) {
    return {
      '/': { page: '/' },
      '/about': { page: '/about' },
      '/p/hello-nextjs': { page: '/post', query: { title: 'hello-nextjs' } },
      '/p/learn-nextjs': { page: '/post', query: { title: 'learn-nextjs' } },
      '/p/deploy-nextjs': { page: '/post', query: { title: 'deploy-nextjs' } },
    }
  },
}

من الجيد معرفة: لا يمكن استخدام حقل query في exportPathMap مع الصفحات المحسنة ثابتًا تلقائيًا أو صفحات getStaticProps لأنها تُصدر إلى ملفات HTML وقت البناء ولا يمكن توفير معلومات استعلام إضافية أثناء next export.

سيتم بعد ذلك تصدير الصفحات كملفات HTML، على سبيل المثال، /about ستصبح /about.html.

exportPathMap هي دالة غير متزامنة تستقبل وسيطين: الأول هو defaultPathMap، وهو الخريطة الافتراضية التي يستخدمها Next.js. الوسيط الثاني هو كائن يحتوي على:

  • dev - true عندما يتم استدعاء exportPathMap في وضع التطوير. false عند تشغيل next export. في التطوير، يُستخدم exportPathMap لتعريف المسارات.
  • dir - المسار المطلق لدليل المشروع
  • outDir - المسار المطلق لدليل out/ قابل للتخصيص باستخدام -o]. عندما يكون dev هو true، ستكون قيمة outDir null.
  • distDir - المسار المطلق لدليل .next/ [قابل للتخصيص باستخدام تكوين distDir]
  • buildId - معرف البناء المُنشأ

الكائن المُعاد هو خريطة للصفحات حيث يكون المفتاح هو مسار الصفحة والقيمة هي كائن يقبل الحقول التالية:

  • page: سلسلة نصية - الصفحة داخل دليل pages التي سيتم عرضها
  • query: كائن - كائن الاستعلام الذي يتم تمريره إلى getInitialProps عند التصيير المسبق. القيمة الافتراضية هي {}

يمكن أن يكون مسار الصفحة المُصدر أيضًا اسم ملف (على سبيل المثال، /readme.md)، ولكن قد تحتاج إلى تعيين رأس Content-Type إلى text/html عند تقديم محتواه إذا كان مختلفًا عن .html.

إضافة شرطة مائلة في النهاية

يمكن تكوين Next.js لتصدير الصفحات كملفات index.html وتطلب شرطة مائلة في النهاية، /about تصبح /about/index.html ويمكن الوصول إليها عبر /about/. كان هذا السلوك الافتراضي قبل Next.js 9.

للرجوع إلى هذا السلوك وإضافة شرطة مائلة في النهاية، افتح next.config.js وقم بتمكين تكوين trailingSlash:

next.config.js
module.exports = {
  trailingSlash: true,
}

تخصيص دليل الإخراج

سيستخدم next export out كدليل إخراج افتراضي، يمكنك تخصيص هذا باستخدام وسيطة -o، كما يلي:

Terminal
next export -o outdir

تحذير: استخدام exportPathMap غير موصى به ويتم تجاوزه بواسطة getStaticPaths داخل pages. لا ننصح باستخدامهما معًا.