NextPDF Backport Builder installeren
Installeer deze buildtooling op het werkstation van een maintainer of op een continuous-integration-runner (CI-runner). Dit is GEEN runtimeafhankelijkheid. Een downstreamapplicatie installeert de builder nooit; die installeert het pakket dat de builder produceert.
In het kort
Sectie met titel “In het kort”Twee doelgroepen installeren elk iets anders:
- Een maintainer of CI-operator kloont deze repository en installeert de bijbehorende buildafhankelijkheden. Installeer
nextpdf/backport-builderalleen in deze context. - Een downstreamapplicatie op een oudere PHP-runtime installeert het gegenereerde pakket
nextpdf/backportvanuit het bijbehorende releasekanaal. Deze repository komt daarbij nooit aan bod.
Deze pagina behandelt beide workflows. Lees het gedeelte dat bij je rol past.
Installatie op de buildhost
Sectie met titel “Installatie op de buildhost”Vereisten
Sectie met titel “Vereisten”| Afhankelijkheid | Constraint | Bron van waarheid |
|---|---|---|
| PHP | >=8.4 <9.0 | composer.jsonrequire.php |
| Composer | 2.6+ | Omgevingstabel in CONTRIBUTING.md |
rector/rector | ^2.0 | composer.jsonrequire-dev |
phpstan/phpstan | ^2.1 | composer.jsonrequire-dev |
phpunit/phpunit | ^13.0 | composer.jsonrequire-dev |
De CI-workflow gebruikt PHP 8.5 voor zowel de build als de dry-run-job. Elke buildhost met een PHP-versie binnen >=8.4 <9.0 voldoet aan de Composer-constraint. De PHP-parser moet de nieuwste syntaxis kunnen verwerken die de broncode gebruikt. Geverifieerd aan de hand van .github/workflows/0-ci.yml.
Stappen
Sectie met titel “Stappen”-
Kloon de repository en check daarna de branch uit voor het target dat je wilt bouwen.
PHP74is de standaardbranch en produceert de core-only-distributie voor PHP 7.4.PHP81produceert de PHP 8.1-distributie met alle adapters.Terminal window git clone https://github.com/nextpdf-labs/backport.gitcd backportgit checkout PHP74 -
Installeer de buildafhankelijkheden. Geef
--no-devniet mee: de Rector-engine, PHPStan en PHPUnit staan inrequire-dev, en zonder die kan de build niet worden uitgevoerd.Terminal window composer install --prefer-dist --no-progress -
Controleer dat de toolchain correct wordt opgelost. Het script
analysevoert PHPStan op niveau 10 uit overrector/rulesenscripts. Een schone run laat zien dat de buildcode zelf in orde is voordat je output produceert.Terminal window composer analyse -
Voer de fixturetests van de regels uit. Elke aangepaste Rector-regel heeft een fixture-suite die de exacte before/after-transformatie controleert.
Terminal window composer test
Na stap 4 is de host klaar om te bouwen. Ga naar /integrations/backport/quickstart/ voor de commando’s voor de dry-run en de volledige build.
Verwachte structuur van de broncodeboom
Sectie met titel “Verwachte structuur van de broncodeboom”De build voegt meerdere bronrepository’s samen tot één boom. Plaats ze als naastgelegen mappen onder één bronroot; het merge-script zoekt elke map op naam op. Voor het PHP 8.1-target leest het nextpdf (core), nextpdf-Artisan, nextpdf-compat-legacy, nextpdf-Laravel, nextpdf-Symfony, nextpdf-CodeIgniter en, wanneer Pro is inbegrepen, nextpdf-Pro. Voor het PHP 7.4-target leest het alleen nextpdf. Geverifieerd aan de hand van scripts/merge-sources.php (MergeSources::__construct()). Geef de bronroot op met --source-dir. Zie /integrations/backport/configuration/ voor de referentie van de vlaggen.
Downstreamgebruik van het geproduceerde pakket
Sectie met titel “Downstreamgebruik van het geproduceerde pakket”Wanneer je een project op een oudere PHP-runtime ondersteunt, installeer je de geproduceerde distributie, niet deze builder.
PHP 8.1 tot 8.3
Sectie met titel “PHP 8.1 tot 8.3”composer require nextpdf/backportHet geïnstalleerde pakket declareert de constraint >=8.1 <8.5 en vervangt nextpdf/core, nextpdf/artisan, nextpdf/laravel, nextpdf/symfony, nextpdf/codeigniter en nextpdf/compat-legacy. Applicatiecode blijft de namespace NextPDF\ ongewijzigd importeren. Het pakket laadt de samengevoegde boom automatisch via één PHP Standard Recommendation 4-prefix (PSR-4), NextPDF\, die aan src/ is toegewezen. Een PSR-4-autoloader voegt de relatieve klassenaam toe aan de basismap die voor de prefix is geregistreerd (PHP-FIG PSR-4). Geverifieerd aan de hand van scripts/adjust-composer.php (buildPublicAutoloadMap(), buildReplace()).
PHP 7.4 tot 8.0
Sectie met titel “PHP 7.4 tot 8.0”composer require nextpdf/backportDe PHP 7.4-distributie is alleen core. De distributie declareert de constraint >=7.4 <8.1 en vervangt alleen nextpdf/core. Framework-adapters, de tcpdf-compatibiliteitslaag en Pro zijn niet inbegrepen in de PHP 7.4-distributie. Geverifieerd aan de hand van scripts/adjust-composer.php en scripts/build.php (het PHP 7.4-target dwingt core-only af). Een project dat een framework-adapter nodig heeft, heeft PHP 8.1 of nieuwer nodig.
composer require nextpdf/backport-proDe Pro-distributie is een afzonderlijk pakket, nextpdf/backport-pro, met een proprietary-licentie. Ze vereist nextpdf/backport op dezelfde major.minor-versie en voegt phpseclib/phpseclib ^3.0 toe. Ze wordt alleen geproduceerd voor het PHP 8.1-target. Geverifieerd aan de hand van scripts/adjust-composer.php (generateProComposer()).
De PHP 7.4-distributie en de Pro-distributie sluiten elkaar uit: door de opzet van het build-script bestaat er geen PHP 7.4 Pro-build.
Polyfills in het geproduceerde pakket
Sectie met titel “Polyfills in het geproduceerde pakket”De gegenereerde composer.json vereist symfony/polyfill-*-pakketten, zodat nieuwere functies uit de standaardbibliotheek op de doelruntime beschikbaar zijn. Het PHP 8.1-target vereist polyfills voor PHP 8.2 tot en met 8.5. Het PHP 7.4-target vereist daarnaast polyfills voor PHP 8.0 en 8.1. Dit zijn runtimeafhankelijkheden van het geproduceerde pakket, niet van de builder. Geverifieerd aan de hand van scripts/adjust-composer.php (generatePublicComposer()).
Vervolgstappen
Sectie met titel “Vervolgstappen”- /integrations/backport/configuration/ — Rector-configuratie, aangepaste regels en de referentie van de build-vlaggen.
- /integrations/backport/quickstart/ — je eerste dry-run en volledige build.