Integração do backport do NextPDF
Apenas ferramental de build, não uma dependência de runtime. Os mantenedores usam este pacote para produzir as distribuições de backport do NextPDF para PHP (PHP: Hypertext Preprocessor) 7.4 e PHP 8.1. As aplicações nunca devem adicioná-lo como dependência de runtime.
Visão geral
Seção intitulada “Visão geral”Há dois pontos de integração distintos. Você integra o repositório do builder ao fluxo de release do host de build. Uma aplicação downstream integra apenas o pacote produzido, nextpdf/backport, à sua própria árvore de dependências. O builder nunca entra na árvore de dependências de uma aplicação.
Instalação (apenas hosts de build)
Seção intitulada “Instalação (apenas hosts de build)”Como o builder declara "type": "project" no composer.json, trate-o como um repositório de projeto, não como uma biblioteca. Integre-o clonando o repositório e executando uma instalação de dev, e não com composer require:
git clone https://github.com/nextpdf-labs/backport.gitcd backportgit checkout PHP74composer install --prefer-dist --no-progressFaça checkout da branch correspondente ao alvo que você pretende produzir. Use PHP74 (o padrão) para a distribuição somente do core para PHP 7.4. Use PHP81 para a distribuição para PHP 8.1 com todos os adaptadores. Não passe --no-dev. O build requer o motor Rector, o PHPStan e o PHPUnit; essas são dependências de dev. Verificado em relação ao composer.json (type, require-dev) e ao modelo de duas branches em /integrations/backport/overview/.
Boot e descoberta automática
Seção intitulada “Boot e descoberta automática”O builder não tem descoberta automática de framework. Durante o build, o scripts/build.php carrega o Rector e as três regras customizadas de abstract syntax tree por meio de chamadas explícitas a require_once e do autoloading PHP Standards Recommendation 4 (PSR-4) do Composer. A sequência completa de boot e a descoberta dos módulos de origem estão documentadas em /integrations/backport/boot-and-discovery/.
Bindings de container
Seção intitulada “Bindings de container”Não se aplica. O builder é uma ferramenta de command-line interface (CLI) sem container de injeção de dependências. Verificado em relação à estrutura do repositório e a composer.jsonautoload.
Configuração de publicação
Seção intitulada “Configuração de publicação”A “configuração de publicação” não é um arquivo separado. Ela corresponde ao conjunto de flags de build e às definições fixas de pacote em scripts/adjust-composer.php:
- Mapa de alvos.
--target=php81produznextpdf/backport(restrição>=8.1 <8.5, substitui o core, os adaptadores e o compat-legacy) e, quando incluído,nextpdf/backport-pro.--target=php74produznextpdf/backport(restrição>=7.4 <8.1, substitui apenasnextpdf/core) e não inclui Pro. - Exclusão.
--no-proexclui o pacote Pro no alvo PHP 8.1. Por design, o alvo PHP 7.4 exclui o Pro e todos os adaptadores. - Versão. O build grava
--version(ou a tag de release após remover ovinicial) nocomposer.jsongerado e noCHANGELOG.md.
Esse comportamento é verificado em relação a scripts/build.php e scripts/adjust-composer.php (generatePublicComposer(), generateProComposer(), buildReplace()). A referência completa das flags está em /integrations/backport/configuration/.
Integração com o fluxo de release
Seção intitulada “Integração com o fluxo de release”Você integra o builder a um fluxo de release por meio dos workflows do GitHub Actions em .github/workflows/. 0-ci.yml valida cada alteração em cada branch permanente com PHPStan, os testes de regra e um dry-run. build.yml produz e publica a distribuição quando recebe um evento de repository-dispatch source-release ou um dispatch manual. O modelo operacional completo — gatilhos, lanes, matriz de validação e release compartilhado — está documentado em /integrations/backport/production-usage/.
Smoke test de consumo da saída
Seção intitulada “Smoke test de consumo da saída”O pipeline de release é o smoke test de integração. Depois que o build termina, o workflow muda o runner para o PHP do alvo e executa php -l em todo o código-fonte emitido. Em seguida, ele instala e exercita o pacote produzido em toda a matriz de validação (PHP 8.1–8.4 para a lane PHP 8.1, PHP 7.4 e 8.0 para a lane PHP 7.4). Uma distribuição rejeitada por um runtime alvo não chega a um release. Verificado em relação a .github/workflows/build.yml (os jobs de syntax-check e validate-*). Você pode executar localmente o smoke test da saída produzida da mesma forma, usando o comando Docker que o estágio de validação imprime — consulte /integrations/backport/quickstart/.
Pontos de entrada públicos
Seção intitulada “Pontos de entrada públicos”A superfície pública do builder é o orquestrador de CLI e seus aliases de script do Composer, não um executável bin/.
| Ponto de entrada | Resolve para | Finalidade |
|---|---|---|
composer build | php scripts/build.php | Executar o build completo |
composer build:dry | php scripts/build.php --dry-run | Executar um build em dry-run |
composer test | phpunit | Executar as suítes de fixtures das regras |
composer analyse | phpstan analyse rector/rules scripts --level=10 | Analisar o código do build |
Verificado em relação a composer.jsonscripts. O pacote downstream expõe os símbolos originais de application programming interface (API) NextPDF\, inalterados pelo backport. O pacote substitui os pacotes de origem e faz o autoload da árvore mesclada por meio de um único prefixo PSR-4.
Veja também
Seção intitulada “Veja também”- /integrations/backport/overview/ — o que é o builder e o que ele produz.
- /integrations/backport/boot-and-discovery/ — sequência de boot e descoberta de origem.
- /integrations/backport/install/ — instalação no host de build e downstream.
- /integrations/backport/production-usage/ — o pipeline de release.