هل يجب عليك تثبيت مجلد node_modules في Git؟

هذا سؤال جيد. هناك حسنات وسيئات. أناقش الموضوع حتى تتمكن من إبداء رأيك الخاص.

هل يجب عليك تثبيت مجلد node_modules في Git؟

أذكر Git ولكن الأمر نفسه ينطبق على أي نظام تحكم في الإصدار تستخدمه

هذا سؤال جيد. هناك حسنات وسيئات.

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

قد يكون لديك احتياجات خاصة تعكس هذا القرار.

أناقش الموضوع حتى تتمكن من إبداء رأيك الخاص.

فيما يلي بعض الحجج المؤيدة لعدم الالتزام بالعقدة_الوحدات

تحافظ على سجل Git نظيفًا. عند إضافة حزمة جديدة ، تقوم بتخزين ملفpackage.jsonوpackage-lock.jsonتغييرات الملف. عندما تقرر تحديث إصدار الحزمة ، كل ما تخزنه هو ملفpackage-lock.jsonتغيير الملف.

package-lock.jsonهي ميزة جديدة نسبيًا لـ npm ، والتي تقضي علىيتقلصالأمر المستخدم في الماضي

أنت تتجنب الاضطرار إلى وضع ربما مئات الميجابايت من التبعيات في المستودع الخاص بك ، وهذا يعني أنه بمرور الوقت سيكون العمل معه أسرع. تبديل الفروع والتحقق من الكود عمليتان تتأثران بشكل كبير بحجم المستودع.

عند العمل مع الفروع ، قد يكون لديك تعارضات دمج تتجاوز الكود الخاص بك ، وبدلاً من ذلك ، تتضمن رمز التبعيات. هذا ليس من الجيد التعامل معه وقد يجعلك تخسر الكثير من الوقت. تجنب الوضع

طلب السحب أو الدمج في حالة تغيير التبعيات ، سيحتوي على المزيد من الملفات المشاركة في العملية. تصبح الأدوات أبطأ أو تقرر عدم إظهار الفرق الكامل (GitHub ، على سبيل المثال)

تحتاج وحدات العقدة الأصلية إلى إعادة تجميعها إذا قمت بالنشر على نظام أساسي مختلف عن جهاز التطوير الخاص بك (حالة الاستخدام الشائعة: تقوم بالتطوير على نظام التشغيل Mac ، والنشر على نظام Linux). تحتاج إلى الاتصالnpm rebuild، مما يؤدي إلى إخراج الخادم من المزامنة.

عدم الالتزام بالعقدة node_modules يعني أنك بحاجة إلى سرد كافة الوحدات الخاصة بك في ملفpackage.jsonpackage-lock.json) كخطوة إلزامية. هذا أمر رائع لأنه قد لا يكون لديك الاجتهاد للقيام بذلك ، وقد تنقطع بعض عمليات npm إذا لم تفعل ذلك.

نصيحة: ليست هناك حاجة لاستخدام الإصدار المحدد في ملفpackage.jsonملف ، لا أكثر منذ إدخالpackage-lock.jsonملف.

إذا كنت تستخدم ملفdependenciesوdevDependenciesمجموعات ، عن طريق ارتكابnode_modulesالمجلد الذي تلتزم به بشكل أساسيdevDependenciesولا توجد طريقة (سهلة) للتخلص منها لبناء الإنتاج.

الأسباب التي قد تدفعك إلى الالتزام بـ node_modules ، وكيفية التخفيف منها

انnpmقد تتم إزالة الحزمة بواسطة مؤلفها من تسجيل npm. حدث ذلك مع المشهورleft-pad incident in 2016 (اقرأ أكثر). هذا نادر الحدوث للحزم الشائعة. إذا حدث هذا ، فقد لا تتمكن من الوصول إلى هذه الوظيفة المحددة.

قد تجادل في ذلك أيضًاnpmغير مضمون بالبقاء إلى أجل غير مسمى ، فقد يختفي ، لذا فإن الطريقة السهلة لضمان الحصول على الكود الكامل لتطبيقك في المستقبل هي إلزامه مع تطبيقك.

في كل مرة تستخدم حزمة ، قم بإنشاء شوكة على GitHub. بين الحين والآخر ، حافظ على تحديثه مع الأصل (يمكن أن يكون آليًا).

هذا ليس عمليًا دائمًا حيث يمكن أن تحتوي الحزم على عشرات التبعيات الخاصة بها.

يمكنك استخدام خادم مستودع خاص لمشروعك ، واستخدامه لاستضافة جميع التبعيات الخاصة بك.

تشمل الخيارات

سبب آخر لارتكاب التبعيات هو القدرة على تعديل الكود بسرعة ، إذا وجدت خطأ أو إذا كنت تريد إضافة شيء إلى مكتبة.

هذا سيف ذو حدين: إذا قمت بذلك ، فستفقد القدرة على ترقية الحزمة إذا تم إصدار إصدارات جديدة ، وهي جيدة فقط للإصلاحات السريعة والمؤقتة.

الحل الأمثل هو إما إرسال بيان عام يقوم بما تريده إلى المشروع الأصلي أو تفرع منه واستخدام شوكة الخاص بك كعنصر تبعية.

تحميل مجانيكتيب Node.js


المزيد من دروس العقدة: