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: String - الصفحة داخل مجلد pages التي سيتم عرضها
  • query: Object - كائن الاستعلام الذي يتم تمريره إلى 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. لا ننصح باستخدامهما معاً.