İçeriğe geç

NextPDF backport entegrasyonu

Yalnızca derleme araçları içindir; çalışma zamanı bağımlılığı değildir. Geliştiriciler bu paketi, NextPDF’in PHP (PHP: Hypertext Preprocessor) 7.4 ve PHP 8.1 backport dağıtımlarını üretmek için kullanır. Uygulamalar bu paketi hiçbir zaman çalışma zamanı bağımlılığı olarak eklememelidir.

İki ayrı entegrasyon noktası vardır. Oluşturucu deposunu derleme ana makinesi üzerindeki yayım akışına entegre edersiniz. Bir alt akış uygulaması ise kendi bağımlılık ağacına yalnızca üretilen nextpdf/backport paketini entegre eder. Oluşturucu hiçbir zaman bir uygulamanın bağımlılık ağacına girmez.

Oluşturucu "type": "project" değerini composer.json dosyasında bildirdiği için onu kitaplık değil, proje deposu olarak ele alın. composer require kullanmak yerine depoyu klonlayıp bir geliştirme kurulumu çalıştırarak entegre edin:

Terminal window
git clone https://github.com/nextpdf-labs/backport.git
cd backport
git checkout PHP74
composer install --prefer-dist --no-progress

Üretmeyi planladığınız hedef için ilgili dala geçin. Yalnızca çekirdek içeren PHP 7.4 dağıtımı için PHP74 (varsayılan) dalını kullanın. Tüm bağdaştırıcıları içeren PHP 8.1 dağıtımı için PHP81 dalını kullanın. --no-dev bayrağını kullanmayın. Derleme, Rector motorunu, PHPStan’i ve PHPUnit’i gerektirir; bunlar geliştirme bağımlılıklarıdır. Bu bilgi, composer.json (type, require-dev) dosyası ve /integrations/backport/overview/ içindeki çift dal modeliyle doğrulanmıştır.

Oluşturucuda çerçeve otomatik keşfi yoktur. Derleme sırasında scripts/build.php, Rector’ı ve üç özel soyut sözdizimi ağacı kuralını açık require_once çağrılarıyla ve Composer PHP Standards Recommendation 4 (PSR-4) otomatik yüklemesiyle yükler. Tam başlatma sırası ve kaynak modül keşfi /integrations/backport/boot-and-discovery/ içinde belgelenmiştir.

Uygulanamaz. Oluşturucu, bağımlılık enjeksiyonu konteyneri kullanmayan bir komut satırı arayüzü (CLI) aracıdır. Depo yapısı ve composer.jsonautoload ifadesiyle doğrulanmıştır.

“Yayımlama yapılandırması” ayrı bir dosya değildir; derleme bayrakları kümesinden ve scripts/adjust-composer.php içindeki sabit paket tanımlarından oluşur:

  • Hedef eşlemesi. --target=php81, nextpdf/backport (kısıt >=8.1 <8.5; çekirdeği, bağdaştırıcıları ve compat-legacy’yi değiştirir) ve dahil edildiğinde nextpdf/backport-pro üretir. --target=php74 ise nextpdf/backport (kısıt >=7.4 <8.1; yalnızca nextpdf/core paketini değiştirir) üretir ve Pro içermez.
  • Hariç tutma. --no-pro, PHP 8.1 hedefinde Pro paketini hariç tutar. PHP 7.4 hedefi yapısı gereği Pro’yu ve tüm bağdaştırıcıları hariç tutar.
  • Sürüm. Derleme, --version değerini (veya baştaki v harfi çıkarıldıktan sonra yayım etiketini) oluşturulan composer.json ve CHANGELOG.md dosyalarına yazar.

Bu davranış, scripts/build.php ve scripts/adjust-composer.php (generatePublicComposer(), generateProComposer(), buildReplace()) dosyalarıyla doğrulanmıştır. Tam bayrak başvurusu /integrations/backport/configuration/ içindedir.

Oluşturucuyu, .github/workflows/ içindeki GitHub Actions iş akışlarıyla bir yayım akışına entegre edersiniz. 0-ci.yml, kalıcı dallara gelen her değişikliği PHPStan, kural testleri ve kuru çalıştırma ile denetler. build.yml, bir source-release repository-dispatch olayı aldığında veya elle tetiklendiğinde dağıtımı üretir ve yayımlar. Tam işletim modeli — tetikleyiciler, şeritler, doğrulama matrisi ve paylaşılan yayım — /integrations/backport/production-usage/ içinde belgelenmiştir.

Yayım hattının kendisi entegrasyon duman testidir. Derleme tamamlandıktan sonra iş akışı, çalıştırıcıyı hedef PHP’ye geçirir ve üretilen kaynağın tamamında php -l çalıştırır. Ardından üretilen paketi doğrulama matrisi boyunca kurar ve sınar (PHP 8.1 şeridi için PHP 8.1–8.4, PHP 7.4 şeridi için PHP 7.4 ve 8.0). Bir hedef çalışma zamanının reddettiği dağıtım yayıma ulaşmaz. Bu, .github/workflows/build.yml dosyasıyla (söz dizimi denetimi ve validate-* işleri) doğrulanmıştır. Yerel olarak üretilen çıktıyı da doğrulama aşamasının yazdırdığı Docker komutuyla aynı şekilde duman testinden geçirebilirsiniz; bkz. /integrations/backport/quickstart/.

Oluşturucunun genel yüzeyi bir bin/ yürütülebilir dosyası değil, CLI düzenleyicisi ve onun Composer betik takma adlarıdır.

Giriş noktasıÇözümlendiği değerAmaç
composer buildphp scripts/build.phpTam derlemeyi çalıştırın
composer build:dryphp scripts/build.php --dry-runKuru çalıştırma derlemesi çalıştırın
composer testphpunitKural düzeneği test takımlarını çalıştırın
composer analysephpstan analyse rector/rules scripts --level=10Derleme kodunu çözümleyin

Bu tablo composer.jsonscripts ile doğrulanmıştır. Alt akış paketi, özgün NextPDF\ uygulama programlama arayüzü (API) sembollerini backport tarafından değiştirilmeden açığa çıkarır. Paket, kaynak paketlerin yerini alır ve birleştirilmiş ağacı tek bir PSR-4 önekiyle otomatik yükler.

  • /integrations/backport/overview/ — oluşturucunun ne olduğu ve ne ürettiği.
  • /integrations/backport/boot-and-discovery/ — başlatma sırası ve kaynak keşfi.
  • /integrations/backport/install/ — derleme ana makinesi ve alt akış kurulumu.
  • /integrations/backport/production-usage/ — yayım hattı.