Przejdź do głównej zawartości

Integracja backportu NextPDF

Wyłącznie narzędzie do kompilacji, nie zależność wykonawcza. Opiekunowie projektu używają tego pakietu do tworzenia dystrybucji backportu NextPDF przeznaczonych dla PHP (PHP: Hypertext Preprocessor) 7.4 oraz PHP 8.1. Aplikacje nigdy nie mogą dodawać tego pakietu jako zależności wykonawczej.

Istnieją dwa odrębne punkty integracji. Repozytorium narzędzia kompilującego jest integrowane z procesem wydawania na hoście kompilacji. Aplikacja docelowa włącza do swojego drzewa zależności wyłącznie wytworzony pakiet nextpdf/backport. Narzędzie kompilujące nigdy nie trafia do drzewa zależności aplikacji.

Ponieważ narzędzie kompilujące deklaruje "type": "project" w pliku composer.json, traktuj je jako repozytorium projektu, a nie bibliotekę. Integruj je przez sklonowanie repozytorium i uruchomienie instalacji deweloperskiej, a nie poleceniem composer require:

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

Przełącz się na gałąź odpowiadającą celowi kompilacji. Użyj PHP74 (wartość domyślna) dla dystrybucji PHP 7.4 zawierającej tylko rdzeń. Użyj PHP81 dla dystrybucji PHP 8.1 ze wszystkimi adapterami. Nie przekazuj --no-dev. Kompilacja wymaga silnika Rector, PHPStan i PHPUnit; są to zależności deweloperskie. Zweryfikowano na podstawie composer.json (type, require-dev) oraz modelu dwóch gałęzi w /integrations/backport/overview/.

Narzędzie kompilujące nie ma mechanizmu automatycznego wykrywania we frameworkach. Podczas kompilacji scripts/build.php wczytuje Rector oraz trzy niestandardowe reguły dla abstrakcyjnego drzewa składni przez jawne wywołania require_once oraz autoładowanie Composer zgodne z PHP Standards Recommendation 4 (PSR-4). Pełna sekwencja rozruchu oraz wykrywanie modułów źródłowych są opisane w /integrations/backport/boot-and-discovery/.

Nie dotyczy. Narzędzie kompilujące jest narzędziem wiersza poleceń (CLI) i nie używa kontenera wstrzykiwania zależności. Zweryfikowano na podstawie struktury repozytorium oraz composer.jsonautoload.

„Konfiguracja publikowania” nie jest oddzielnym plikiem. To zestaw flag kompilacji oraz stałych definicji pakietów w pliku scripts/adjust-composer.php:

  • Mapa celów. --target=php81 wytwarza nextpdf/backport (ograniczenie >=8.1 <8.5, zastępuje rdzeń, adaptery oraz compat-legacy) oraz, jeśli jest dołączony, nextpdf/backport-pro. --target=php74 wytwarza nextpdf/backport (ograniczenie >=7.4 <8.1, zastępuje tylko nextpdf/core) bez wersji Pro.
  • Wykluczenie. --no-pro wyklucza pakiet Pro dla celu PHP 8.1. Zgodnie z założeniami cel PHP 7.4 wyklucza wersję Pro oraz wszystkie adaptery.
  • Wersja. Kompilacja zapisuje wartość --version (lub etykietę wydania po usunięciu początkowego v) do wygenerowanych plików composer.json oraz CHANGELOG.md.

To zachowanie zweryfikowano na podstawie scripts/build.php oraz scripts/adjust-composer.php (generatePublicComposer(), generateProComposer(), buildReplace()). Pełny opis flag znajduje się w /integrations/backport/configuration/.

Narzędzie kompilujące jest włączane do procesu wydawania przez przepływy pracy GitHub Actions w .github/workflows/. Dla każdej zmiany w każdej stałej gałęzi 0-ci.yml uruchamia bramkę obejmującą PHPStan, testy reguł oraz przebieg próbny. build.yml buduje i publikuje dystrybucję po otrzymaniu zdarzenia repository-dispatch source-release lub po ręcznym uruchomieniu. Pełny model działania — wyzwalacze, tory, macierz walidacji oraz wspólne wydanie — opisano w /integrations/backport/production-usage/.

Potok wydawania pełni rolę testu dymnego integracji. Po zakończeniu kompilacji przepływ pracy przełącza środowisko uruchomieniowe na docelową wersję PHP i uruchamia php -l na całym wygenerowanym kodzie źródłowym. Następnie instaluje i testuje wytworzony pakiet w całej macierzy walidacji (PHP 8.1–8.4 dla toru PHP 8.1, PHP 7.4 i 8.0 dla toru PHP 7.4). Dystrybucja odrzucona przez docelowe środowisko uruchomieniowe nie trafia do wydania. Zweryfikowano na podstawie .github/workflows/build.yml (zadań sprawdzania składni oraz validate-*). Lokalnie wytworzony wynik możesz poddać temu samemu testowi dymnemu za pomocą polecenia Docker wypisywanego przez etap walidacji — zobacz /integrations/backport/quickstart/.

Publiczną powierzchnię narzędzia kompilującego stanowi orkiestrator CLI oraz jego aliasy skryptów Composer, a nie plik wykonywalny bin/.

Punkt wejściaMapuje się naPrzeznaczenie
composer buildphp scripts/build.phpUruchom pełną kompilację
composer build:dryphp scripts/build.php --dry-runUruchom próbną kompilację
composer testphpunitUruchom zestawy testów reguł na danych próbnych
composer analysephpstan analyse rector/rules scripts --level=10Przeanalizuj kod kompilacji

Zweryfikowano na podstawie composer.jsonscripts. Pakiet docelowy udostępnia oryginalne symbole interfejsu programowania aplikacji (API) NextPDF\, bez zmian wprowadzanych przez backport. Pakiet zastępuje pakiety źródłowe i automatycznie ładuje scalone drzewo przez pojedynczy prefiks PSR-4.

  • /integrations/backport/overview/ — czym jest narzędzie kompilujące i co wytwarza.
  • /integrations/backport/boot-and-discovery/ — sekwencja rozruchu i wykrywanie źródeł.
  • /integrations/backport/install/ — instalacja na hoście kompilacji oraz instalacja docelowa.
  • /integrations/backport/production-usage/ — potok wydawania.