Instalacja narzędzia NextPDF Backport Builder
Zainstaluj te narzędzia kompilacji na stacji roboczej opiekuna lub na runnerze ciągłej integracji (CI). NIE jest to zależność uruchomieniowa. Aplikacja pochodna nigdy nie instaluje narzędzia kompilacji; instaluje pakiet wytwarzany przez to narzędzie.
W skrócie
Dział zatytułowany „W skrócie”Dwie grupy odbiorców instalują różne elementy:
- Opiekun lub operator CI klonuje to repozytorium i instaluje jego zależności kompilacji. Pakiet
nextpdf/backport-builderinstaluje się wyłącznie w tym kontekście. - Aplikacja pochodna działająca w starszym środowisku uruchomieniowym PHP instaluje wygenerowany pakiet
nextpdf/backportze swojego kanału wydań. Nigdy nie sięga do tego repozytorium.
Ta strona obejmuje oba przepływy pracy. Przeczytaj sekcję, która odpowiada Twojej roli.
Instalacja na hoście kompilacji
Dział zatytułowany „Instalacja na hoście kompilacji”Wymagania
Dział zatytułowany „Wymagania”| Zależność | Ograniczenie | Źródło prawdy |
|---|---|---|
| PHP | >=8.4 <9.0 | composer.jsonrequire.php |
| Composer | 2.6+ | Tabela środowiska w pliku CONTRIBUTING.md |
rector/rector | ^2.0 | composer.jsonrequire-dev |
phpstan/phpstan | ^2.1 | composer.jsonrequire-dev |
phpunit/phpunit | ^13.0 | composer.jsonrequire-dev |
Przepływ pracy CI udostępnia PHP 8.5 zarówno do zadania kompilacji, jak i do zadania próbnego uruchomienia. Każdy host kompilacji z wersją PHP z przedziału >=8.4 <9.0 spełnia ograniczenie Composera. Parser PHP musi akceptować najnowszą składnię używaną w kodzie źródłowym. Zweryfikowano względem .github/workflows/0-ci.yml.
-
Sklonuj repozytorium, a następnie przełącz się na gałąź odpowiadającą docelowej wersji, którą chcesz zbudować.
PHP74to gałąź domyślna; tworzy dystrybucję dla PHP 7.4 zawierającą wyłącznie rdzeń.PHP81tworzy dystrybucję dla PHP 8.1 ze wszystkimi adapterami.Okno terminala git clone https://github.com/nextpdf-labs/backport.gitcd backportgit checkout PHP74 -
Zainstaluj zależności kompilacji. Nie przekazuj
--no-dev: silnik Rector, PHPStan i PHPUnit znajdują się wrequire-dev, a bez nich kompilacja nie może działać.Okno terminala composer install --prefer-dist --no-progress -
Potwierdź, że łańcuch narzędzi jest poprawnie rozwiązywany. Skrypt
analyseuruchamia PHPStan na poziomie 10 dlarector/rulesiscripts. Bezbłędne wykonanie potwierdza, że sam kod kompilacji jest poprawny, zanim wytworzysz wynik.Okno terminala composer analyse -
Uruchom testy oparte na fixture’ach reguł. Każda niestandardowa reguła Rector ma zestaw fixture’ów, który dokładnie sprawdza transformację before/after.
Okno terminala composer test
Po kroku 4 host jest gotowy do kompilacji. Przejdź do /integrations/backport/quickstart/, aby poznać polecenia uruchomienia próbnego i pełnej kompilacji.
Oczekiwana struktura drzewa źródłowego
Dział zatytułowany „Oczekiwana struktura drzewa źródłowego”Kompilacja scala kilka repozytoriów źródłowych w jedno drzewo. Umieść je jako katalogi równorzędne w jednym katalogu głównym źródeł; skrypt scalający odwołuje się do każdego katalogu po nazwie. W przypadku docelowej wersji PHP 8.1 odczytuje nextpdf (rdzeń), nextpdf-Artisan, nextpdf-compat-legacy, nextpdf-Laravel, nextpdf-Symfony, nextpdf-CodeIgniter oraz nextpdf-Pro, jeśli dołączono Pro. W przypadku docelowej wersji PHP 7.4 odczytuje wyłącznie nextpdf. Zweryfikowano względem scripts/merge-sources.php (MergeSources::__construct()). Wskaż katalog główny źródeł za pomocą --source-dir. Opis flag znajdziesz na stronie /integrations/backport/configuration/.
Korzystanie z wytworzonego pakietu w projektach pochodnych
Dział zatytułowany „Korzystanie z wytworzonego pakietu w projektach pochodnych”Gdy utrzymujesz projekt działający w starszym środowisku uruchomieniowym PHP, zainstaluj wytworzoną dystrybucję, a nie to narzędzie kompilacji.
PHP od 8.1 do 8.3
Dział zatytułowany „PHP od 8.1 do 8.3”composer require nextpdf/backportZainstalowany pakiet deklaruje ograniczenie >=8.1 <8.5 i zastępuje pakiety nextpdf/core, nextpdf/artisan, nextpdf/laravel, nextpdf/symfony, nextpdf/codeigniter oraz nextpdf/compat-legacy. Kod aplikacji nadal importuje przestrzeń nazw NextPDF\ bez zmian. Pakiet automatycznie ładuje scalone drzewo za pomocą pojedynczego prefiksu PHP Standard Recommendation 4 (PSR-4) NextPDF\ odwzorowanego na src/. Mechanizm automatycznego ładowania PSR-4 dołącza względną nazwę klasy do katalogu bazowego zarejestrowanego dla danego prefiksu (PHP-FIG PSR-4). Zweryfikowano względem scripts/adjust-composer.php (buildPublicAutoloadMap(), buildReplace()).
PHP od 7.4 do 8.0
Dział zatytułowany „PHP od 7.4 do 8.0”composer require nextpdf/backportDystrybucja dla PHP 7.4 zawiera wyłącznie rdzeń. Deklaruje ograniczenie >=7.4 <8.1 i zastępuje wyłącznie nextpdf/core. Adaptery frameworków, warstwa zgodności z tcpdf oraz Pro nie są zawarte w dystrybucji dla PHP 7.4. Zweryfikowano względem scripts/adjust-composer.php oraz scripts/build.php (docelowa wersja PHP 7.4 wymusza tryb obejmujący wyłącznie rdzeń). Projekt, który potrzebuje adaptera frameworka, wymaga PHP 8.1 lub nowszego.
composer require nextpdf/backport-proDystrybucja Pro to osobny pakiet, nextpdf/backport-pro, z licencją proprietary. Wymaga nextpdf/backport w zgodnej wersji major.minor i dodaje phpseclib/phpseclib ^3.0. Jest tworzona wyłącznie dla docelowej wersji PHP 8.1. Zweryfikowano względem scripts/adjust-composer.php (generateProComposer()).
Dystrybucja dla PHP 7.4 i dystrybucja Pro wzajemnie się wykluczają: ze względu na konstrukcję skryptu kompilacji nie istnieje kompilacja Pro dla PHP 7.4.
Polyfille w wytworzonym pakiecie
Dział zatytułowany „Polyfille w wytworzonym pakiecie”Wygenerowany plik composer.json wymaga pakietów symfony/polyfill-*, aby nowsze funkcje biblioteki standardowej były dostępne w docelowym środowisku uruchomieniowym. Docelowa wersja PHP 8.1 wymaga polyfilli dla PHP od 8.2 do 8.5. Docelowa wersja PHP 7.4 wymaga dodatkowo polyfilli dla PHP 8.0 i 8.1. Są to zależności uruchomieniowe wytworzonego pakietu, a nie narzędzia kompilacji. Zweryfikowano względem scripts/adjust-composer.php (generatePublicComposer()).
- /integrations/backport/configuration/ — konfiguracja Rector, reguły niestandardowe i opis flag kompilacji.
- /integrations/backport/quickstart/ — pierwsze uruchomienie próbne i pełna kompilacja.