استخدم معرف الإنشاء المتسق القائم على GIT لتطبيق Next.js الخاص بك
حزمة صغيرة لإنشاء معرف بناء ثابت يعتمد على GIT لتطبيق Next.js عند تشغيله next build على كل خادم في نشر متعدد الخادم.
تقوم هذه الوحدة بتصدير وظيفة يمكنك استخدامها كخيار تكوين GenerateBuildid في Next.Config.js.
بشكل افتراضي ، ستستخدم أحدث تجزئة GIT من مستودع GIT المحلي (أي ما يعادل git rev-parse HEAD ):
// next.config.js
const nextBuildId = require ( 'next-build-id' )
module . exports = {
generateBuildId : ( ) => nextBuildId ( { dir : __dirname } )
}
// => 'f9fc968afa249d162c924a8d5b4ce6562c164c2e' إذا كنت تفضل استخدام معرف الإنشاء بالنسبة إلى أحدث علامة في ريبو GIT الخاص بك ، فصف describe: true كخيار وإخراج git describe --tags بدلاً من ذلك:
// next.config.js
const nextBuildId = require ( 'next-build-id' )
module . exports = {
generateBuildId : ( ) => nextBuildId ( { dir : __dirname , describe : true } )
}
// => 'v1.0.0' (no changes since v1.0.0 tag)
// => 'v1.0.0-19-ga8f7eee' (19 changes since v1.0.0 tag) تعرض هذه الوحدة أيضًا إصدارًا متزامنًا للاحتياجات المخصصة ، على سبيل المثال ، تمرير معرف الإنشاء مباشرة إلى تكوين Sentry. ما عليك سوى الاتصال بـ nextBuildId.sync({ dir: __dirname }) بدلاً من ذلك.
إذا كنت تقوم بتشغيل مثيلات متعددة من التطبيق الخاص بك يجلس خلف موازن التحميل دون تقارب الجلسة (وأنت تقوم ببناء تطبيقك مباشرة على كل خادم إنتاج بدلاً من تعبئته مسبقًا) ، فإن أداة مثل هذه ضرورية لتجنب أخطاء next.js مثل "تجزئة ملف البناء غير الصالحة" ، والتي تحدث عندما تحدث نفس العميل (رمز المتصفح) إلى خلفية خادم متعددة (خادم نود) الذي يحتوي على معرفات بناء مختلفة.
يتم تخزين معرف الإنشاء الذي يستخدمه التطبيق الخاص بك على نظام الملفات في ملف نصي BUILD_ID في دليل الإنشاء الخاص بك ، وهو .next افتراضيًا.
$ npm i next-build-id تصدر هذه الوحدة وظيفتين ، واحدة غير متزامنة ( nextBuildId() التصدير الأساسي) وواحدة متزامنة ( nextBuildId.sync() ). تقبل كلتا الوظيفة كائن خيارات واحد ، ودعم نفس الخيارات المذكورة أدناه. تُرجع كلتا الوظيفتين (أو حلها إلى) سلسلة ، تمثل معرف الإنشاء المستند إلى GIT.
الخيارات المدعومة هي:
dir (سلسلة ، process.cwd() ): دليل داخل مستودع GIT المحلي
استخدام __dirname من وحدة Next.config.js آمنة بشكل عام. من المفترض أن تكون القيمة الافتراضية هي الدليل الذي تقوم منه بتشغيل الأمر next build ، ولكن قد لا يكون هذا صحيحًا بناءً على كيفية إنشاء تطبيق Next.js الخاص بك.
describe (Boolean ، Default false ): استخدم وصف علامة GIT بدلاً من أحدث الالتزام Sha
حدد هذا على أنه true لاستخدام git describe --tags بدلاً من git rev-parse HEAD لإنشاء معرف الإنشاء. إذا لم تكن هناك علامات في مستودع GIT المحلي الخاص بك ، فسيتم استخدام أحدث التزام SHA بدلاً من ذلك ، إلا إذا قمت أيضًا بتحديد fallbackToSha: false .
fallbackToSha (منطقية ، true افتراضي): احتياطي describe: true
ينطبق فقط عند استخدام describe: true . إذا كنت ترغب في أن تكون صارمًا بشأن طلب استخدام (ووجود) العلامات ، فعليك تعطيل ذلك باستخدام fallbackToSha: false ، وفي هذه الحالة سيتم طرح خطأ في حالة عدم وجود علامات.
لاحظ أن هذه الوحدة توفر حقًا طريقة عامة للحصول على معرف أو سلسلة حالة لأي مستودع GIT محلي ، مما يعني أنه لا يرتبط مباشرة بـ Next.js بأي شكل من الأشكال - يعتمد فقط على كيفية استخدامه.
ISC © Andrew Goode