اذهب إلى المحتوى

السؤال

نشر

السلام عليكم و رحمة الله و بركاته ,

اريد أن اسأل عن ملف package-lock.json :

عندما ارفع المشروع على GitHub هل يجب أن ارفعه مع المشروع مثل ملف package.json ؟

أم يمكنني الاستغناء عنه و تثبيته مجددًا اثناء تشغيل المشروع مثل ملف node_modules ,

و شكرًا لكم

Recommended Posts

  • 0
نشر

يجب اضافة package-lock.json إلى ملفات المشروع اثناء رفعه على GitHub وذلك من اجل الاسباب التالية :

وصف تمثيل واحد لشجرة التبعية بحيث يضمن أعضاء الفريق وكذلك عمليات النشر و وعمليات التكامل المستمر أن تقوم بتثبيت نفس التبعيات تمامًا.

يقوم بتوفير وسيلة للمستخدمين "للسفر عبر الزمن" إلى الحالات السابقة للوحدات node_modules دون الحاجة إلى الالتزام بالدليل نفسه.

لتسهيل رؤية أكبر للتغييرات الشجرية من خلال عرض الاختلافات في مصدر قابل للقراءة.

يحسّن عملية التثبيت من خلال السماح لـ npm بتخطي الحزم الفرعية المتكررة للحزم المثبتة مسبقًا.

  • 0
نشر

يجب أن تعرف أولاً ان ملف package-lock.json يستخدم في مشروع Node.js لتأكيد إصدارات الحزم التي يتم استخدامها وتثبيتها بشكل دقيق ومنظم. يتم إنشاؤه تلقائيًا عند تثبيت حزم Node.js باستخدام أداة npm.

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

الفرق بين pacakge.json و package-lock.json

package.json:

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

  • package-lock.json:

هو ملف يحتوي على قائمة بالحزم المثبتة وإصداراتها وتوابعها المعتمدة dependencies، بما في ذلك التبعيات التي يعتمد عليها كل حزمة. يتم إنشاؤه تلقائيًا عند تثبيت الحزم باستخدام أداة npm عبر ملف package.json. يهدف هذا الملف إلى تأكيد تثبيت الحزم بشكل دقيق ومنظم بناءً على إصداراتها المحددة.

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

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

بالنسبة للسؤال الخاص بك، فإنه من الأفضل تضمين ملف package-lock.json في مشروعك على GitHub، بجانب ملف package.json. فعندما يقوم أحد المستخدمين بتحميل مشروعك من GitHub، سيحصلون على نسخة من ملف package-lock.json الخاص بك. وبالتالي، سيتم تأكيد تثبيت الحزم بشكل دقيق بناءً على إصداراتها المحددة في هذا الملف.

يمكنك الاستفاذة من سلسلة المقالات المنشورة حول git.

  • 0
نشر

ملف package-lock.json هو ملف ينشأ تلقائيًا عند تثبيت حزم Node.js باستخدام npm أو Yarn. يحتوي هذا الملف على قائمة بالحزم المثبتة وإصداراتها وتفاصيل أخرى حول التبعيات الخاصة بها.

من المهم تضمين ملف package-lock.json عند رفع مشروعك على GitHub لأنه يساعد على تضمين إصدارات محددة من الحزم المستخدمة في المشروع. هذا يضمن أن جميع المطورين الآخرين الذين يحاولون تنزيل المشروع يستخدمون نفس الإصدارات التي تم استخدامها أثناء تطوير المشروع.

لذلك، يجب تضمين ملف package-lock.json مع المشروع عند رفعه على GitHub. يمكنك إعادة تثبيت الحزم باستخدام هذا الملف من خلال استخدام الأمر npm ci بدلاً من npm install. على عكس npm install، فإن npm ci يستند إلى ملف package-lock.json لتثبيت الحزم بدقة وتحمل نفس الإصدارات المستخدمة أثناء تطوير المشروع.

  • 0
نشر

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

كما أن ربما تتسائل حول مجرد استخدام package.json مع أرقام الإصدارات الدقيقة حيث أن ملف ال package.json  بالفعل يقوم بحفظ الإصدارات

. ضع في اعتبارك أن package.json الخاص بك يحتوي فقط على تبعياتك المباشرة ، وليس تبعيات تبعياتك (تسمى أحيانًا التبعيات المتداخلة). هذا يعني أنه مع الحزمة القياسية. .

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...