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 هي دالة async تستقبل وسيطتين: الأولى هي 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 - كائن 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. لا نوصي باستخدامهما معًا.