NextPDF Backport Builder installieren
Build-Werkzeug – KEINE Laufzeitabhängigkeit. Der Builder wird auf einer Maintainer-Workstation oder einem CI-Runner installiert. Eine nachgelagerte Anwendung installiert niemals den Builder, sondern das Paket, das der Builder erzeugt.
Auf einen Blick
Abschnitt betitelt „Auf einen Blick“Zwei unterschiedliche Zielgruppen installieren unterschiedliche Komponenten:
- Ein Maintainer oder CI-Operator klont dieses Repository und installiert die zugehörigen Build-Abhängigkeiten. Nur in diesem Kontext wird
nextpdf/backport-builderinstalliert. - Eine nachgelagerte Anwendung auf einer älteren PHP-Laufzeit installiert das erzeugte Paket
nextpdf/backportaus dem zugehörigen Release-Kanal. Die Anwendung greift niemals direkt auf dieses Repository zu.
Diese Seite behandelt beide Fälle. Lesen Sie den Abschnitt, der zu Ihrer Rolle passt.
Installation auf dem Build-Host
Abschnitt betitelt „Installation auf dem Build-Host“Anforderungen
Abschnitt betitelt „Anforderungen“| Abhängigkeit | Beschränkung | Maßgebliche Quelle |
|---|---|---|
| PHP | >=8.4 <9.0 | composer.jsonrequire.php |
| Composer | 2.6+ | Umgebungstabelle in CONTRIBUTING.md |
rector/rector | ^2.0 | composer.jsonrequire-dev |
phpstan/phpstan | ^2.1 | composer.jsonrequire-dev |
phpunit/phpunit | ^13.0 | composer.jsonrequire-dev |
Der Continuous-Integration-Workflow stellt PHP 8.5 sowohl für den Build- als auch für den Dry-Run-Job bereit. Ein Build-Host mit jeder PHP-Version im Bereich >=8.4 <9.0 erfüllt die Composer-Beschränkung. Der Parser muss die neueste Syntax akzeptieren, die im Quellcode verwendet wird. Verifiziert anhand von .github/workflows/0-ci.yml.
Schritte
Abschnitt betitelt „Schritte“-
Klonen Sie das Repository und checken Sie den Branch für das Ziel aus, das Sie bauen möchten.
PHP74ist der Standard-Branch; er erzeugt die Distribution für PHP 7.4 ausschließlich mit dem Kern.PHP81erzeugt die Distribution für PHP 8.1 mit allen Adaptern.Terminal-Fenster git clone https://github.com/nextpdf-labs/backport.gitcd backportgit checkout PHP74 -
Installieren Sie die Build-Abhängigkeiten. Verwenden Sie nicht
--no-dev: Die Rector-Engine, PHPStan und PHPUnit liegen inrequire-dev, und der Build kann ohne sie nicht ausgeführt werden.Terminal-Fenster composer install --prefer-dist --no-progress -
Prüfen Sie, ob sich die Toolchain korrekt auflösen lässt. Das Skript
analyseführt PHPStan auf Level 10 fürrector/rulesundscriptsaus. Ein sauberer Durchlauf bestätigt, dass der Build-Code selbst solide ist, bevor Sie eine Ausgabe erzeugen.Terminal-Fenster composer analyse -
Führen Sie die Fixture-Tests der Regeln aus. Jede benutzerdefinierte Rector-Regel verfügt über eine Fixture-Suite, die die exakte before/after-Transformation prüft.
Terminal-Fenster composer test
Nach Schritt 4 ist der Host bereit für den Build. Fahren Sie mit /integrations/backport/quickstart/ fort, um die Dry-Run- und Full-Build-Aufrufe kennenzulernen.
Erwartung an den Quellbaum
Abschnitt betitelt „Erwartung an den Quellbaum“Der Build führt mehrere Quell-Repositorys zu einem Baum zusammen. Das Merge-Skript erwartet sie als Geschwisterverzeichnisse unter einem einzigen Quellstamm und adressiert sie über ihren Namen. Für das Ziel PHP 8.1 liest es nextpdf (Kern), nextpdf-Artisan, nextpdf-compat-legacy, nextpdf-Laravel, nextpdf-Symfony, nextpdf-CodeIgniter und nextpdf-Pro, wenn Pro einbezogen ist. Für das Ziel PHP 7.4 liest es nur nextpdf. Verifiziert anhand von scripts/merge-sources.php (MergeSources::__construct()). Geben Sie den Quellstamm mit --source-dir an. Siehe /integrations/backport/configuration/ für die Flag-Referenz.
Nutzung des erzeugten Pakets durch nachgelagerte Projekte
Abschnitt betitelt „Nutzung des erzeugten Pakets durch nachgelagerte Projekte“Ein Projekt auf einer älteren PHP-Laufzeit installiert die erzeugte Distribution, nicht diesen Builder.
PHP 8.1 bis 8.3
Abschnitt betitelt „PHP 8.1 bis 8.3“composer require nextpdf/backportDas installierte Paket deklariert die Beschränkung >=8.1 <8.5 und ersetzt nextpdf/core, nextpdf/artisan, nextpdf/laravel, nextpdf/symfony, nextpdf/codeigniter und nextpdf/compat-legacy. Der Anwendungscode verwendet weiterhin unverändert den Namespace NextPDF\. Das Paket lädt den zusammengeführten Baum automatisch über das einzige PSR-4-Präfix NextPDF\, das auf src/ abgebildet ist. Ein PSR-4-Autoloader hängt den relativen Klassennamen an ein Basisverzeichnis an, das für das Präfix registriert ist (PHP-FIG PSR-4). Verifiziert anhand von scripts/adjust-composer.php (buildPublicAutoloadMap(), buildReplace()).
PHP 7.4 bis 8.0
Abschnitt betitelt „PHP 7.4 bis 8.0“composer require nextpdf/backportDie Distribution für PHP 7.4 enthält nur den Kern. Sie deklariert die Beschränkung >=7.4 <8.1 und ersetzt nur nextpdf/core. Framework-Adapter, die tcpdf-Kompatibilitätsschicht und Pro sind nicht Teil der Distribution für PHP 7.4. Verifiziert anhand von scripts/adjust-composer.php und scripts/build.php (das Ziel PHP 7.4 erzwingt ausschließlich den Kern). Ein Projekt, das einen Framework-Adapter benötigt, muss PHP 8.1 oder neuer verwenden.
composer require nextpdf/backport-proDie Pro-Distribution ist ein separates Paket, nextpdf/backport-pro, unter einer proprietary-Lizenz. Sie erfordert nextpdf/backport in der passenden major.minor und fügt phpseclib/phpseclib ^3.0 hinzu. Sie wird nur für das Ziel PHP 8.1 erzeugt. Verifiziert anhand von scripts/adjust-composer.php (generateProComposer()).
Die Distribution für PHP 7.4 und die Pro-Distribution schließen sich gegenseitig aus: Aufgrund der Konstruktion des Build-Skripts gibt es keinen Pro-Build für PHP 7.4.
Polyfills im erzeugten Paket
Abschnitt betitelt „Polyfills im erzeugten Paket“Die generierte composer.json erfordert symfony/polyfill-*-Pakete, damit neuere Funktionen der Standardbibliothek auf der Ziellaufzeit aufgelöst werden. Das Ziel PHP 8.1 erfordert Polyfills für PHP 8.2 bis 8.5. Das Ziel PHP 7.4 erfordert zusätzlich die Polyfills für PHP 8.0 und 8.1. Es handelt sich um Laufzeitabhängigkeiten des erzeugten Pakets, nicht des Builders. Verifiziert anhand von scripts/adjust-composer.php (generatePublicComposer()).
- /integrations/backport/configuration/ – Rector-Konfigurationen, benutzerdefinierte Regeln und die Referenz der Build-Flags.
- /integrations/backport/quickstart/ – erster Dry-Run und vollständiger Build.