Pular para o conteúdo

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.

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.

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:

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

Faç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/.

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/.

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.

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=php81 produz nextpdf/backport (restrição >=8.1 <8.5, substitui o core, os adaptadores e o compat-legacy) e, quando incluído, nextpdf/backport-pro. --target=php74 produz nextpdf/backport (restrição >=7.4 <8.1, substitui apenas nextpdf/core) e não inclui Pro.
  • Exclusão. --no-pro exclui 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 o v inicial) no composer.json gerado e no CHANGELOG.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/.

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/.

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/.

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 entradaResolve paraFinalidade
composer buildphp scripts/build.phpExecutar o build completo
composer build:dryphp scripts/build.php --dry-runExecutar um build em dry-run
composer testphpunitExecutar as suítes de fixtures das regras
composer analysephpstan analyse rector/rules scripts --level=10Analisar 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.

  • /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.