Integrasi backport NextPDF
Ini hanya perkakas build, bukan dependensi runtime. Pemelihara menggunakan paket ini untuk menghasilkan distribusi backport NextPDF bagi PHP (PHP: Hypertext Preprocessor) 7.4 dan PHP 8.1. Aplikasi tidak boleh menambahkan paket ini sebagai dependensi runtime.
Sekilas pandang
Bagian berjudul “Sekilas pandang”Ada dua titik integrasi yang berbeda. Anda mengintegrasikan repositori builder ke alur rilis host build. Aplikasi hilir hanya mengintegrasikan paket yang dihasilkan, nextpdf/backport, ke pohon dependensinya. Builder tidak pernah masuk ke pohon dependensi aplikasi.
Pemasangan (hanya host build)
Bagian berjudul “Pemasangan (hanya host build)”Karena builder mendeklarasikan "type": "project" di composer.json, perlakukan builder sebagai repositori proyek, bukan pustaka. Integrasikan dengan meng-clone repositori dan menjalankan instalasi dev, bukan melalui composer require:
git clone https://github.com/nextpdf-labs/backport.gitcd backportgit checkout PHP74composer install --prefer-dist --no-progressCheckout branch untuk target yang akan Anda hasilkan. Gunakan PHP74 (default) untuk distribusi PHP 7.4 yang hanya berisi core. Gunakan PHP81 untuk distribusi PHP 8.1 dengan semua adapter. Jangan menambahkan --no-dev. Build memerlukan engine Rector, PHPStan, dan PHPUnit; semuanya adalah dependensi dev. Hal ini diverifikasi terhadap composer.json (type, require-dev) dan model dua branch di /integrations/backport/overview/.
Boot dan penemuan otomatis
Bagian berjudul “Boot dan penemuan otomatis”Builder tidak menyediakan penemuan otomatis framework. Saat build berjalan, scripts/build.php memuat Rector dan tiga aturan abstract syntax tree khusus melalui pemanggilan eksplisit require_once dan autoloading Composer PHP Standards Recommendation 4 (PSR-4). Urutan boot lengkap dan penemuan modul sumber didokumentasikan di /integrations/backport/boot-and-discovery/.
Binding container
Bagian berjudul “Binding container”Tidak berlaku. Builder adalah perkakas command-line interface (CLI) tanpa container dependency injection. Hal ini diverifikasi terhadap struktur repositori dan composer.jsonautoload.
Konfigurasi publish
Bagian berjudul “Konfigurasi publish”“Konfigurasi publish” bukan berkas tersendiri, melainkan kumpulan flag build dan definisi paket tetap di scripts/adjust-composer.php:
- Peta target.
--target=php81menghasilkannextpdf/backport(batasan>=8.1 <8.5, menggantikan core, adapter, dan compat-legacy) serta, jika disertakan,nextpdf/backport-pro.--target=php74menghasilkannextpdf/backport(batasan>=7.4 <8.1, hanya menggantikannextpdf/core) dan tidak menyertakan Pro. - Pengecualian.
--no-promengecualikan paket Pro pada target PHP 8.1. Sesuai rancangannya, target PHP 7.4 mengecualikan Pro dan semua adapter. - Versi. Build menuliskan
--version(atau tag rilis setelah menghapus awalanv) ke dalamcomposer.jsondanCHANGELOG.mdyang dihasilkan.
Perilaku ini diverifikasi terhadap scripts/build.php dan scripts/adjust-composer.php (generatePublicComposer(), generateProComposer(), buildReplace()). Referensi lengkap untuk flag tersedia di /integrations/backport/configuration/.
Integrasi alur rilis
Bagian berjudul “Integrasi alur rilis”Anda mengintegrasikan builder ke alur rilis melalui workflow GitHub Actions di .github/workflows/. 0-ci.yml memvalidasi setiap perubahan pada masing-masing branch permanen dengan PHPStan, tes aturan, dan dry-run. build.yml menghasilkan dan merilis distribusi saat menerima event repository-dispatch source-release atau dispatch manual. Model operasi lengkap — pemicu, lane, matriks validasi, dan rilis bersama — didokumentasikan di /integrations/backport/production-usage/.
Smoke test konsumsi keluaran
Bagian berjudul “Smoke test konsumsi keluaran”Pipeline rilis berfungsi sebagai smoke test integrasi. Setelah build selesai, workflow mengalihkan runner ke PHP target dan menjalankan php -l pada seluruh sumber yang dihasilkan. Selanjutnya, workflow memasang dan menguji paket yang dihasilkan di seluruh matriks validasi (PHP 8.1–8.4 untuk lane PHP 8.1, PHP 7.4 dan 8.0 untuk lane PHP 7.4). Distribusi yang ditolak oleh runtime target tidak akan mencapai rilis. Hal ini diverifikasi terhadap .github/workflows/build.yml (job syntax-check dan validate-*). Anda dapat melakukan smoke test pada keluaran yang dihasilkan secara lokal dengan cara yang sama menggunakan perintah Docker yang dicetak oleh tahap validasi — lihat /integrations/backport/quickstart/.
Titik masuk publik
Bagian berjudul “Titik masuk publik”Antarmuka publik builder adalah orkestrator CLI dan alias skrip Composer-nya, bukan executable bin/.
| Titik masuk | Diselesaikan menjadi | Tujuan |
|---|---|---|
composer build | php scripts/build.php | Jalankan build penuh |
composer build:dry | php scripts/build.php --dry-run | Jalankan build dry-run |
composer test | phpunit | Jalankan suite fixture aturan |
composer analyse | phpstan analyse rector/rules scripts --level=10 | Analisis kode build |
Hal ini diverifikasi terhadap composer.jsonscripts. Paket hilir mengekspos simbol application programming interface (API) NextPDF\ asli yang tidak diubah oleh backport. Paket ini menggantikan paket sumber dan melakukan autoload pada pohon yang digabungkan melalui prefiks PSR-4 tunggal.
Lihat juga
Bagian berjudul “Lihat juga”- /integrations/backport/overview/ — apa itu builder dan apa yang dihasilkannya.
- /integrations/backport/boot-and-discovery/ — urutan boot dan penemuan sumber.
- /integrations/backport/install/ — pemasangan host build dan hilir.
- /integrations/backport/production-usage/ — pipeline rilis.