Pular para o conteúdo
getnextpdf.com

estabilidade: Beta

Configuração de ponta a ponta do Backport

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.