إزالة حزمة في Laravel عبر Composer: دليل خطوة بخطوة

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة: لماذا "الزوائد" في المشروع ضارة، وكيف يساعدك Composer في التخلص منها

\n\n

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

\n\n

عاجلاً أم آجلاً، يسأل كل مطور نفسه: "كيف يمكنني إزالة حزمة من Laravel باستخدام PHP Composer؟". وهذه ليست مجرد عملية تقنية - بل هي فن ترتيب الأولويات. اليوم سنشرح هذه العملية من الألف إلى الياء: ليس فقط الأوامر، بل دورة التنظيف الكاملة مع أمثلة ونصائح وحلول للمشاكل الشائعة.

\n\n

هل أنت مستعد لتحويل مشروعك من "مكب للتبعيات" إلى نظام منظم؟ هيا بنا!

\n\n

ما يجب معرفته قبل إزالة الحزمة

\n\n

قبل تشغيل composer remove، دعنا نفهم كيف يدير Composer التبعيات بشكل عام. في Laravel (وأي مشروع PHP)، يعمل Composer من خلال ملفين رئيسيين:

\n\n
    \n
  • composer.json - قائمة بجميع الحزم المطلوبة وإصداراتها.
  • \n
  • composer.lock - لقطة دقيقة للإصدارات المثبتة، لضمان عمل المشروع بنفس الطريقة على جميع الأجهزة.
  • \n
\n\n

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

\n\n

الأمر الأساسي: composer remove

\n\n

أبسط وأصح طريقة لإزالة حزمة هي استخدام الأمر المدمج composer remove. الصيغة بسيطة للغاية:

\n\n
composer remove vendor/package-name
\n\n

على سبيل المثال، إذا كنت تريد إزالة الحزمة الشهيرة للتصحيح barryvdh/laravel-debugbar، سيكون الأمر كالتالي:

\n\n
composer remove barryvdh/laravel-debugbar
\n\n

بعد التنفيذ، سترى مخرجات مشابهة لهذه:

\n\n
Package "barryvdh/laravel-debugbar" removed from require\nLoading composer repositories with package information\nUpdating dependencies (including require-dev)\nNothing to install or update\nGenerating optimized autoload files\n
\n\n

هذا كل شيء! اختفت الحزمة من vendor و composer.json و composer.lock. لكن هذه مجرد البداية. السحر الحقيقي يحدث عندما تبدأ بتنظيف المشروع من "الآثار الجانبية".

\n\n

إزالة تبعيات التطوير (dev-dependencies)

\n\n

إذا كانت الحزمة مثبتة فقط لأغراض التطوير (مثل phpunit/phpunit)، فهي عادةً ما تكون مكتوبة في قسم require-dev. Composer يفهم تلقائيًا من أين يحذف، ولكن للتأكيد يمكنك استخدام العلم --dev:

\n\n
composer remove --dev phpunit/phpunit
\n\n

هذا يضمن أن الأمر سيتم تطبيقه على تبعيات التطوير فقط. على الرغم من أن Composer في الواقع يتعامل معها بشكل ممتاز حتى بدون العلم.

\n\n

الإزالة اليدوية: عندما تعجز الأتمتة

\n\n

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

\n\n

في مثل هذه الحالات، يجب التصرف بحزم. إليك خوارزمية الإزالة اليدوية:

\n\n
    \n
  1. احذف إدخال الحزمة من قسم require أو require-dev في ملف composer.json.
  2. \n
  3. احذف مجلد الحزمة من vendor/vendor/package-name (يمكنك ببساطة مسح مجلد vendor بالكامل - لكن هذا إجراء جذري).
  4. \n
  5. شغّل composer update
  6. \n

المدونات

توصيات الكتب