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

ماهو الفرق بين composer.lock and composer.json

Hafsa Aly

السؤال

Recommended Posts

  • 0

يستخدم Composer في PHP لإدارة الاعتماديات والمكتبات المستخدمة في مشروع PHP. ويحتوي Composer على ملفين رئيسيين لإدارة الاعتماديات والمكتبات المستخدمة: composer.json و composer.lock.

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

باختصار، فإن composer.json يحدد الاعتماديات والمكتبات المستخدمة في المشروع وإصداراتها، في حين أن composer.lock يحدد الإصدارات الفعلية المثبتة لتلك الحزم والمكتبات في المشروع.
 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

في مشروع لارافيل، ملف composer.json يحتوي على قائمة بجميع الحزم (packages) التي يحتاجها المشروع، بما في ذلك إصداراتها المحددة وتبعياتها.

وملف composer.lock هو ملف يُنشأ تلقائياً عند تنفيذ أمر تثبيت الحزم باستخدام Composer ويحتوي على نفس القائمة من الحزم وإصداراتها المحددة، بالإضافة إلى معلومات عن الحزم المثبتة بالفعل في النظام.

الفرق الرئيسي بينهما هو أن composer.json يُحدث يدوياً بشكل مستمر بواسطتك لإضافة وحذف الحزم وتحديث إصداراتها.

بينما يتم توليد composer.lock تلقائياً بواسطة Composer.

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

أي أن composer.json هو الملف الرئيسي الذي يستخدمه المطورون لتحديد متطلبات حزم المشروع، بينما يعتبر composer.lock ملف إضافي يستخدم لضمان توافق الحزم وعدم وجود أي تعارضات بينها.

ولعلك تتسائلي لماذا نحن بحاجة إلى  composer.lock؟

في الحقيقة نحن بحاجة إلى ملف composer.lock لعدة أسباب بالإضافة إلى ما تم ذكره سابقًا:

1- تجنب تغييرات غير مرغوبة في الحزم

حيثث يساعد ملف composer.lock على تجنب تغييرات غير مرغوبة في الحزم المثبتة في المشروع.

فإذا قمت بتثبيت الحزم باستخدام composer.json فقط، فقد يحدث تغيير غير متوقع في إصدار الحزمة أو إضافة حزم جديدة تعتمد على إصدارات مختلفة من الحزم الحالية.

وبما أن الملف composer.lock يحدد إصدارات الحزم بدقة، فلا يمكن تغييرها دون إعادة تشغيل عملية تثبيت الحزم.

2- التأكد من استقرار المشروع

يتيح ملف composer.lock لفريق التطوير والمطورين الآخرين التأكد من أن جميع الحزم المستخدمة في المشروع مستقرة، وأنها تم اختبارها بشكل جيد، مما يعني أن الجميع لديه نفس الإصدار من الحزم.

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

وربما لديك تساؤل آخر، عند استخدام الأمر composer install يتم تثبيت الحزم من ملف composer.lock أم composer.json؟

وما يحدث هو أنه سيتم تثبيت الحزم من ملف composer.lock إذا كان موجوداً في المجلد الحالي، وإلا سيتم استخدام ملف composer.json.

وإذا كنت قد أنشأتي ملف composer.json ولم تقومي بتنفيذ الأمر composer install من قبل، فلن يتم إنشاء ملف composer.lock بعد تشغيل composer install.

وبدلاً من ذلك، سيتم إنشاء ملف composer.lock وتحديثه تلقائيًا عندما تقوم بتشغيل composer update أو عند تثبيت حزمة جديدة باستخدام composer require.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

بجانب الفروقات التي أشار اليها المدربان، وجب الاشارة ايضا الى أن هنالك ملف composer.phar الذي هو الآخر ملف يختلف عن كليهما كليا. فهو ملف قابل للتنفيذ يستخدم لتثبيت وإدارة حزم PHP باستخدام أداة Composer دون تثبيتها. اذ يتم تحميله عادة من الموقع الرسمي لـComposer.

تختلف الميزات التي يوفرها ملف composer.phar قليلاً عن تلك التي تقدمها النسخة المثبتة من Composer. فعلى سبيل المثال، يمكن استخدام ملف composer.phar لتثبيت Composer على نظام لا يحتوي على PHP، ويمكن تشغيل الملف phar على أي منصة تدعم PHP.

يتم استخدام الملف composer.phar عند تشغيل الأوامر التالية:

php composer.phar install
php composer.phar update

ويتم استخدام هذا الملف بدلاً من تنزيل وتثبيت Composer على النظام المحلي. يتم تنفيذ الملف composer.phar بتشغيله باستخدام PHP من خلال الأمر "php composer.phar" متبوعًا بالأمر المطلوب.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

تستخدم أداة Composer في PHP لإدارة الاعتماديات (Dependencies) التي يحتاجها مشروعك، وتوفر لك Composer ملفين للإدارة وتعريف الاعتماديات المستخدمة في مشروعك، وهما:

composer.json: يحتوي على قائمة بالاعتماديات التي تحتاجها والإصدارات المحددة (إذا كانت محددة)، بالإضافة إلى المتطلبات الأخرى لتشغيل مشروعك (مثل PHP الإصدار وبعض الإعدادات الأخرى).

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

الفرق بين الملفين هو: 

  • composer.json يحدد متطلبات المشروع ويتم استخدامه لتحديد الاعتماديات المطلوبة لمشروعك، بينما composer.lock يحتوي على قائمة بالاعتماديات التي تم تثبيتها بالفعل في مشروعك.
  • عند تشغيل أمر composer install، سيتم تثبيت الإصدارات المحددة من الاعتماديات في ملف composer.lock، بينما سيتم تحديث ملف composer.json فقط إذا تم إضافة اعتمادية جديدة أو تغيير إصدار محدد.
  • composer.lock يتحكم في إصدارات الاعتماديات المثبتة بالفعل في مشروعك، مما يحافظ على توافقية المشروع ويضمن أن يتم تشغيل المشروع بنفس الطريقة على جميع الأنظمة. ويجب تضمين ملف composer.lock في نظام التحكم بالإصدارات (VCS) الخاص بك (مثل Git) لضمان أن يتم تثبيت الإصدارات المحددة بشكل صحيح على جميع المواقع.
  • يمكن استخدام composer.json لتحديد الاعتماديات المطلوبة لتشغيل مشروعك، ويمكن تعديلها يدويًا أو عبر استخدام أوامر Composer. يقوم Composer بتثبيت الإصدارات المحددة من الاعتماديات في ملف composer.lock.
  • يجب تحديث composer.json بشكل دوري إذا تم إضافة اعتماديات جديدة أو تحديث الإصدارات المحددة للاعتماديات الحالية. عند تحديث ملف composer.json، يجب تشغيل أمر composer update لتحديث ملف composer.lock بالإصدارات المحدثة.
  • عند تشغيل أمر composer install، سيقوم Composer بتحميل الإصدارات المحددة في ملف composer.lock وتثبيتها. وإذا لم يتم العثور على ملف composer.lock، سيقوم Composer بتنزيل الإصدارات المحددة في ملف composer.json، وقد يؤدي ذلك إلى تثبيت إصدارات مختلفة في كل مرة تثبيت فيها الاعتماديات.
  • تستخدم composer.json و composer.lock معًا لضمان أن يتم تثبيت الإصدارات المحددة بشكل صحيح وللتحكم في إصدارات الاعتماديات التي تم تثبيتها في مشروعك.

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...