Composer: تثبيت إصدار محدد من الحزمة لتحسين الأداء

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

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

ابدأ الدورة

لماذا يعتبر الإصدار الدقيق للحزمة قوة خارقة للمطور؟

\n\n

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

\n\n

اليوم سنشرح كيفية تثبيت إصدار محدد من الحزمة عبر Composer — الأداة الرئيسية لإدارة التبعيات في PHP. ولكن ليس فقط "كيف"، بل مع التركيز على التحسين والأداء. لأن الإصدار الصحيح للحزمة لا يعني فقط الاستقرار، بل أيضًا سرعة تطبيقك.

\n\n

بالمناسبة، هذا السؤال هو من أكثر الأسئلة شيوعًا على Stack Overflow (آلاف المشاهدات!). وليس من المستغرب: كل مطور PHP ثانٍ وقع في مشكلة عدم توافق الإصدارات مرة واحدة على الأقل.

\n\n

ما هو Composer ولماذا تثبيت الإصدارات؟

\n\n

Composer هو مدير التبعيات لـ PHP. يسمح لك بإضافة المكتبات والأطر والأدوات بأمر واحد. لكن لديه ميزة واحدة: إذا لم تحدد إصدارًا محددًا، فسيأخذ آخر إصدار مناسب. وهذا قد يكون محفوفًا بالمخاطر.

\n\n

تخيل: أنت تستخدم monolog/monolog لتسجيل الأخطاء. في ملف composer.json الخاص بك مكتوب:

\n\n
"require": {\n    "monolog/monolog": "^2.0"\n}
\n\n

الرمز ^ يعني "أي إصدار من 2.0 إلى 3.0 (بدون تضمين)". إذا صدر إصدار 2.5 مع تغييرات جوهرية — قد ينهار مشروعك. لذلك تثبيت إصدار محدد هو أساس الموثوقية.

\n\n

كيفية تثبيت إصدار محدد من الحزمة: ثلاث طرق عملية

\n\n

دعنا نصل إلى صلب الموضوع فورًا. إليك ثلاث طرق موثوقة ستستخدمها يوميًا.

\n\n

الطريقة 1: أمر composer require مع تحديد الإصدار

\n\n

أسهل وأسرع طريقة هي استخدام المفتاح --with-dependencies وتحديد الإصدار صراحة:

\n\n
composer require "vendor/package:1.2.3" --with-dependencies
\n\n

مثال للحزمة الشائعة guzzlehttp/guzzle:

\n\n
composer require "guzzlehttp/guzzle:7.4.5" --with-dependencies
\n\n

ماذا يحدث؟ يقوم Composer بتنزيل الإصدار 7.4.5 بالضبط، ويسحب تبعياته ويحدث ملفي composer.json و composer.lock. انتهى. أنت محمي من المفاجآت.

\n\n

نصيحة للأداء: استخدم العلم --no-dev إذا كانت الحزمة مطلوبة فقط في بيئة الإنتاج. سيقلل ذلك من عدد الملفات التي يتم تنزيلها:

\n\n
composer require "guzzlehttp/guzzle:7.4.5" --no-dev
\n\n

الطريقة 2: التحرير اليدوي لملف composer.json

\n\n

إذا كنت تعمل بالفعل في مشروع وتريد تغيير الإصدار، افتح ملف composer.json واكتب الإصدار الدقيق:

\n\n
{\n    "require": {\n        "monolog/monolog": "2.8.0",\n        "guzzlehttp/guzzle": "7.4.5"\n    }\n}
\n\n

ثم قم بتنفيذ:

\n\n
composer update vendor/package
\n\n

أو لجميع الحزم:

\n\n
composer install
\n\n

هام: إذا كنت تقوم بتحديث حزمة واحدة فقط، استخدم composer update vendor/package، وليس composer update بدون معلمات. وإلا سيقوم Composer بتحديث جميع التبعيات، مما قد يؤدي إلى تغييرات غير متوقعة.

\n\n

الطريقة 3: استخدام أسماء مستعارة للإصدارات (aliases)

\n\n

أحيانًا تحتاج إلى تثبيت إصدار لم يتم وضع علامة عليه بعد، مثل فرع dev-master. لهذا استخدم الأسماء المستعارة:

\n\n
composer require "vendor/package:dev-master#abc123"
\n\n

أو في composer.json:

\n\n
{\n    "require": {\n        "vendor/package": "dev-master"\n    },\n    "repositories": [\n        {\n            "type": "vcs",\n            "url": "http                

المدونات

توصيات الكتب