تثبيت أداة بناء النقل الخلفي الخاصة بـ NextPDF
ثبّت أدوات البناء هذه على محطة عمل المشرف أو على مشغّل تكامل مستمر (CI). فهذه الأدوات ليست تبعية لوقت التشغيل. لا يثبّت التطبيق التابع أداة البناء أبدًا؛ بل يثبّت الحزمة التي تنتجها أداة البناء.
لمحة سريعة
قسم بعنوان «لمحة سريعة»تحتاج جهتان مختلفتان إلى تثبيت أشياء مختلفة:
- يستنسخ المشرف أو مشغّل CI هذا المستودع ويثبّت تبعيات البناء الخاصة به. ثبّت
nextpdf/backport-builderفي هذا السياق فقط. - يثبّت التطبيق التابع الذي يعمل بوقت تشغيل PHP أقدم حزمة
nextpdf/backportالمولَّدة من قناة الإصدار الخاصة بها. ولا يتعامل مع هذا المستودع أبدًا.
تغطّي هذه الصفحة سيرَي العمل كليهما. اقرأ القسم الذي يطابق دورك.
التثبيت على مضيف البناء
قسم بعنوان «التثبيت على مضيف البناء»المتطلبات
قسم بعنوان «المتطلبات»| التبعية | القيد | المصدر المرجعي |
|---|---|---|
| PHP | >=8.4 <9.0 | composer.jsonrequire.php |
| Composer | 2.6+ | جدول البيئة في CONTRIBUTING.md |
rector/rector | ^2.0 | composer.jsonrequire-dev |
phpstan/phpstan | ^2.1 | composer.jsonrequire-dev |
phpunit/phpunit | ^13.0 | composer.jsonrequire-dev |
يستخدم سير عمل CI الإصدار PHP 8.5 لكل من مهمة البناء ومهمة التشغيل التجريبي. أي مضيف بناء يشغّل إصدار PHP ضمن >=8.4 <9.0 يفي بقيد Composer. يجب أن يقبل مُحلِّل PHP أحدث صيغة يستخدمها المصدر. مُتحقَّق منه مقابل .github/workflows/0-ci.yml.
الخطوات
قسم بعنوان «الخطوات»-
استنسخ المستودع، ثم اسحب الفرع الخاص بالهدف الذي تريد بناءه.
PHP74هو الفرع الافتراضي، وينتج توزيعة PHP 7.4 التي تقتصر على النواة. ينتجPHP81توزيعة PHP 8.1 مع جميع المحوّلات.Terminal window git clone https://github.com/nextpdf-labs/backport.gitcd backportgit checkout PHP74 -
ثبّت تبعيات البناء. لا تمرّر
--no-dev: فمحرّك Rector وPHPStan وPHPUnit موجودة فيrequire-dev، ولا يمكن تشغيل البناء من دونها.Terminal window composer install --prefer-dist --no-progress -
تأكّد من أن سلسلة الأدوات تُحَلّ بنجاح. يشغّل البرنامج النصي
analyseأداة PHPStan عند المستوى 10 علىrector/rulesوscripts. يبيّن التشغيل النظيف أن شيفرة البناء نفسها سليمة قبل إنتاج المخرجات.Terminal window composer analyse -
شغّل اختبارات تثبيتات القواعد. لكل قاعدة Rector مخصّصة مجموعة تثبيتات تتحقّق بدقة من تحويل before/after.
Terminal window composer test
بعد الخطوة 4، يصبح المضيف جاهزًا للبناء. انتقل إلى /integrations/backport/quickstart/ للاطّلاع على استدعاءات التشغيل التجريبي والبناء الكامل.
التوقّعات المتعلّقة بشجرة المصدر
قسم بعنوان «التوقّعات المتعلّقة بشجرة المصدر»يدمج البناء عدة مستودعات مصدر في شجرة واحدة. ضعها كأدلّة شقيقة ضمن جذر مصدر واحد؛ فبرنامج الدمج يتعامل مع كل دليل باسمه. بالنسبة إلى هدف PHP 8.1، يقرأ nextpdf (النواة)، وnextpdf-Artisan، وnextpdf-compat-legacy، وnextpdf-Laravel، وnextpdf-Symfony، وnextpdf-CodeIgniter، وnextpdf-Pro عند تضمين Pro. بالنسبة إلى هدف PHP 7.4، يقرأ nextpdf فقط. مُتحقَّق منه مقابل scripts/merge-sources.php (MergeSources::__construct()). حدّد جذر المصدر باستخدام --source-dir. راجع /integrations/backport/configuration/ للاطّلاع على مرجع الرايات.
الاستهلاك التابع للحزمة المُنتَجة
قسم بعنوان «الاستهلاك التابع للحزمة المُنتَجة»عندما تدعم مشروعًا يعمل بوقت تشغيل PHP أقدم، ثبّت التوزيعة المُنتَجة، لا أداة البناء هذه.
PHP 8.1 إلى 8.3
قسم بعنوان «PHP 8.1 إلى 8.3»composer require nextpdf/backportتُعلن الحزمة المثبَّتة القيد >=8.1 <8.5 وتحلّ محلّ nextpdf/core، وnextpdf/artisan، وnextpdf/laravel، وnextpdf/symfony، وnextpdf/codeigniter، وnextpdf/compat-legacy. تستمر شيفرة التطبيق في استيراد مساحة الأسماء NextPDF\ دون تغيير. تحمّل الحزمة الشجرة المدموجة تلقائيًا عبر بادئة PHP Standard Recommendation 4 (PSR-4) الوحيدة NextPDF\ المربوطة بـ src/. يُلحق محمّل PSR-4 التلقائي اسم الفئة النسبي بدليل أساس مسجَّل للبادئة (PHP-FIG PSR-4). مُتحقَّق منه مقابل scripts/adjust-composer.php (buildPublicAutoloadMap()، buildReplace()).
PHP 7.4 إلى 8.0
قسم بعنوان «PHP 7.4 إلى 8.0»composer require nextpdf/backportتقتصر توزيعة PHP 7.4 على النواة فقط. تُعلن القيد >=7.4 <8.1 وتحلّ محلّ nextpdf/core فقط. لا تتضمّن توزيعة PHP 7.4 محوّلات أطر العمل، ولا طبقة التوافق مع tcpdf، ولا Pro. مُتحقَّق منه مقابل scripts/adjust-composer.php وscripts/build.php (هدف PHP 7.4 يفرض الاقتصار على النواة). يحتاج المشروع الذي يتطلّب محوّل إطار عمل إلى PHP 8.1 أو أحدث.
Pro
قسم بعنوان «Pro»composer require nextpdf/backport-proتوزيعة Pro حزمة منفصلة، nextpdf/backport-pro، بترخيص proprietary. تتطلّب nextpdf/backport عند major.minor المطابق، وتضيف phpseclib/phpseclib ^3.0. لا تُنتَج إلا لهدف PHP 8.1. مُتحقَّق منه مقابل scripts/adjust-composer.php (generateProComposer()).
توزيعة PHP 7.4 وتوزيعة Pro متعارضتان: فبحكم بنية البرنامج النصي للبناء، لا يوجد بناء Pro لـ PHP 7.4.
حشوات التوافق (polyfills) في الحزمة المُنتَجة
قسم بعنوان «حشوات التوافق (polyfills) في الحزمة المُنتَجة»يتطلّب ملف composer.json المولَّد حزم symfony/polyfill-* حتى تتمكّن دوال المكتبة القياسية الأحدث من التحلّل في وقت التشغيل الهدف. يتطلّب هدف PHP 8.1 حشوات توافق لـ PHP 8.2 حتى 8.5. ويتطلّب هدف PHP 7.4 أيضًا حشوتي التوافق لـ PHP 8.0 و8.1. هذه تبعيات وقت تشغيل للحزمة المُنتَجة، وليست تبعيات أداة البناء. مُتحقَّق منه مقابل scripts/adjust-composer.php (generatePublicComposer()).
التالي
قسم بعنوان «التالي»- /integrations/backport/configuration/ — تهيئة Rector والقواعد المخصّصة ومرجع رايات البناء.
- /integrations/backport/quickstart/ — أول تشغيل تجريبي وبناء كامل لك.