ما هو الـ Package Manager (مدير الحزم ) ؟ ما دوره في المشروع البرمجي ؟ ما انواعه ؟ و كيف تبدأ بالعمل به

ما هو الـ Package Manager (مدير الحزم ) ؟ ما دوره في المشروع البرمجي ؟ ما انواعه ؟ و كيف تبدأ بالعمل به

أثناء محاولة بناء مشروع برمجي كامل، فأنت ستضيف العديد من البرمجيات الخارجية لمشروعك البرمجي، فلا يمكنك حاليا إنجاز مشروع برمجي ( و سنحدد مجال تطوير تطبيقات الويب في هذا المقال كمثال ) لا يمكنك إنجازه بما توفر من لغات أساسية و أصلية في المجال مثل Html, Css, Js, Php، لا بد ان تستعين بمنصات و مكتبات و فريمووركات خارجية لتسهيل الأمر عليك، مثل Bootstrap في الـ Front End او FontAwesome او ربما Angular و غيرها . 
 و إدراج هذه المكتبات و الإطارات في مشروعك البرمجي بشكل يدوي قد يكون مرهقا، خصوصا انه توجب عليك التحقق من إصدار كل واحد و توافقه مع مشروعك البرمجي، فقد يكون و على سبيل المثال الـ Angular 4 لا يدعم نسخة Bootstrap 4، و أنت حملت و أدرجت النسخة الرابعة، و هنا لن يكون أي توافق بالطبع ( هذا فقط كمثال فالـ Ang 4 يدعم Bootstrap 4 ) . 

ما هو الـ Package Manager (مدير الحزم ) ؟ ما دوره في المشروع البرمجي ؟ ما انواعه ؟ و كيف تبدأ بالعمل به

بغض النظر عن مسألة توافق الإطارات فيما بينها و لغات البرمجة، فأنت في مشروع برمجي ستضيف العديد من البرمجيات الخارجية من أجل تشكيل برمجية نهائية، ستستشغل بالعديد من الـ API's و العديد من الـ Framworks و غيرها، فكيف يمكنك إدارة كل هذه الأمور دفعة واحدة؟ خصوصا ان كثرتها و إضافتها بشكل كامل في برمجياتك قد يسبب ثقل مشروعك البرمجي ؟ 

- ما هو الـ Package Manager : 

من هذا المنطلق ظهر الـ Package Manager، يمكننا ان نقول انها نظام او برمجية محددة تقوم بإدارة كل البرمجيات الخارجية الأخرى في مشروعنا البرمجي، فنحن غير مضطرين في كل مرة بالبحث عن CDN الخاص ببرمجية معينة او تحميلها ثم إدراجها بشكل يدوي و ما الى ذلك، يكفي ان تكون تلك البرمجية مُدعمة من طرف الـ Package Manager الذي نحن بصدد العمل عليه، ثم تحميلها بواسطة ذلك الـ Package Manager و تلقائيا سيتم إضافتها للمشروع . 
ليس هذا فقط، بل يمكن التحكم في تحديثاتها أيضا، إذ يساعدك الـ Package Manager على تحديث كل برمجياتك بكود واحد فقط، و يساعدك على ضبط توافق البرمجيات في مشروعك، و يساعدك أيضا على حذف البرمجيات الأخرى الغير مستخدمة في المشروع، و ذلك من أجل تنظيم أكبر و اكثر إحترافية لمشروعك البرمجي . 

إقرأ أيضا : إليك 20 مصدر رائع و قوي لتعلم البرمجة بلغة الـ PHP ( و إطارات العمل الخاصة بها Frameworks )


- ما دور الـ Package Manager في المشروع البرمجي ؟ 

الـ Package Manager يقوم بإدارة كل الموارد الخارجية لك في مشروعك، من إضافة موارد خارجية و إطارات و فريمووركات و حتى المكتبات مفتوحة المصدر التي تجدها على Github و تريد تضمينها في مشروعك، يمكنك فعل كل ذلك بسطر Console واحد ( في جميع المنصات )، يمكنك كذلك حذف الموارد الخارجية في حالة عدم إحتياجها، كما يمكنك تحديث كل الموارد لآخر الإصدارات دفعة واحدة . 
لكن الاهم في كل هذا، هو تجميعها كلها و تشغيلها بدون مشاكل، فأحيانا تضيف مكتبات و إطارات و موارد خارجية و لا تدري ان كانت تشتغل ام لا، فتقوم بعمل بعض الـ Tests و ترى ان إدراجها تم بشكل صحيح لكنها غير شغالة لأسباب اخرى، ثم تقضي ساعات في محاولة معرفة السبب . 
لا لا، بل يوجد أفضل، ماذا لو أخيرا إنتهيت من المشروع بإضافة و لنقل 7 مكتبات خارجية و أردت نقله لسيرفر خارجي و رفعه على إستضافة، سيتوجب عليك مجددا رفع كل تلك المكتبات و تغيير الـ URL الخاص بها في حالة إدراجها بطرق معينة ( مثل إدراجها عن طريق الـ Enques في الـ Wordpress ) مما سيضعك أمام عائق تعديل و إعادة هيكلة ملفات المشروع . 
اترى كم ستسهل عليك الـ Package Manager الامر ؟ 

للـ Package Managers أنواع و إختلافات كذلك و مجال إستخدامها، إليك بعضا منها : 

- الـ Composer : 


إن كنت تشتغل في مشاريع مبنية على الـ Php فلربما سمعت و شاهدت آخرين يستخدمون الـ Composer أكثر من مرة، الـ Composer و بعد تنصيبه على حاسوبك و التحقق من وجوده و عمله، سيمكنك صديقي إدارة كل الموارد الخارجية لمشروعك من خلاله، ملف Json بسيط تضيفه وسط مشروعك يتواصل مع موقع Packagist الذي يحمل كل و جميع أنواع الموارد التي يستطيع الـ Composer التواصل معها و إستخدامها، بسطر واحد " composer install " تستطيع إضافة اي حزمة الى مشروعك و  بدئ العمل بها . 
يدعم الـ Composer كل أنواع البرمجيات المبنية على الـ Php او الإطارات الخاصة بها، يمكنك العمل بها مباشرة على مشروع Php Native او إطار عمل مثل Laravel, Symfony, Codeigniter و غيرها . 
الجميل في الـ Composer انه يضيف كل الملفات الى مجلد محدد و يستدعيها جميعها عن طريق الـ Autoload مما يوفر عليك عناء إستدعاء كل واحدة على حدة . 

إقرأ أيضا : هذه هي اللغات البرمجية التي يجب عليك تعلمها لسنة 2018 !

- الـ Gems : 


و هو Package Manager مخصص للغة البرمجة Ruby و بالضبط إطار العمل Rails، يقوم بالـ Gem تلقائيا فور إنشاء مشروع Rails جديد بإضافة نفسه في المشروع، فور فتحه يمكنك الإطلاع على كل الحزمات الخارجية المدرجة في مشروعك الذي قمت بإنشائه، يمكنك التوجه لموقع Ruby Gems للإطلاع على كل البرمجيات و الحزم الخارجية التي يمكنك إدراجها في مشروع Rails الخاص بك، إدراج البرمجيات و الحزم في المشروع سهل للغاية، يكفي إدراج إسم الحزمة و الإصدار في ملف الـ Gem ثم تشغيل الـ Bundle عن طريق Bundle Install ليتم تثبيث الحزمة و بدئ العمل بها وسط مشروعك البرمجي، أترى سهولة إستخدام الـ Package manager في المشروع ؟ 

- الـ npm : 

  و لربما انك سمعته كثيرا، بل في كل مرة ترى بعض البرمجيات الخارجية او المكتبات تجده يوفر لك طرق لتنصيبها عبر الـ CDN او التحميل او عن طريق الـ Npm، و لربما تسائلت كذلك عن ماهية هذا الـ npm و دوره لوهلة، ثم نسيت الأمر و حملت المكتبة و بدأت في إستخدامها مباشرة .
الـ Npm و هو Package Manager للـ Node js المبنية على الجافاسكربت، يمكن تقريبا إستخدامها في أي مشروع برمجي على الويب، يكفي تنصيب الـ Nodejs في حاسوبك ثم بدئ العمل بها، إستخدامها شائع و سهل و ستنظم لك عمل المشروع الخاص بك تنظيما جيدا و توفر لك إمكانية إدارة كل الموارد و الحزم في برمجيتك، و لا أتخيل حاليا اي مشروع ويب مبني على الجافاسكربت لا يستخدم بالـ  Npm كمدير للحزم . 

إقرأ أيضا : ما هي لغات البرمجة الخاصة ببرمجة الذكاء الإصطناعي ؟

- الـ Pip : 


لأكون صريحا معك انا شخصيا لا أبرمج بلغة البرمجة بايثون كون ان إهتمامي الشخصي منصب على الجافا بالمقام الأول، لدي مخططات لتعلم البايثون مستقبلا حين أحتاج الى بناء برمجية مختصة بهذه اللغة، و بما اننا نتحدث عن مدراء الحزم و الـ Package Managers، فوجب الذكر ان للبرمجيات التي تعتمد على البايثون مثل Django و Flask و غيرها مدير حزم خاص بها وهو Pip الذي يسمح لك بتنصيب اي حزم خارجية و إدارتها كما الحال بالنسبة للحزم السابقة . 

مدراء الحزم او Package Managers مفيدة لك كثيرا، قد تجد صعوبة في التعامل معها في بداية الأمر، لكن مع الوقت ستصير ضرورية و مؤكدة في أي مشروع برمجي تبدأ العمل به . 

شاركه على :