Ir al contenido

Integración del backport de NextPDF

Herramienta de compilación: NO es una dependencia en tiempo de ejecución. El equipo de mantenimiento consume este paquete para producir las distribuciones de backport de NextPDF para PHP 7.4 y PHP 8.1. Las aplicaciones nunca deben añadir este paquete como dependencia en tiempo de ejecución.

Existen dos puntos de integración distintos. El host de compilación integra el repositorio del compilador en un flujo de publicación. La aplicación consumidora integra el paquete producido, nextpdf/backport, en su árbol de dependencias. El compilador nunca forma parte del árbol de dependencias de una aplicación.

El compilador declara "type": "project" en composer.json; por tanto, es un repositorio de proyecto, no una biblioteca. Debe integrarse clonando el repositorio y ejecutando una instalación de desarrollo, no con un composer require:

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

Cambiar a la rama correspondiente al destino que se vaya a producir. Usar PHP74 (el valor predeterminado) para la distribución de solo núcleo de PHP 7.4. Usar PHP81 para la distribución de PHP 8.1 con todos los adaptadores. No pasar --no-dev. La compilación necesita el motor Rector, PHPStan y PHPUnit, que son dependencias de desarrollo. Comprobado con composer.json (type, require-dev) y el modelo de doble rama en /integrations/backport/overview/.

No hay descubrimiento automático del framework. Durante la compilación, scripts/build.php conecta Rector y las tres reglas personalizadas del árbol de sintaxis abstracta mediante require_once explícito y la autocarga PSR-4 de Composer. La secuencia completa de arranque y el descubrimiento de módulos de origen se documentan en /integrations/backport/boot-and-discovery/.

No aplica. El compilador es una herramienta de CLI sin contenedor de inyección de dependencias. Comprobado con la estructura del repositorio y composer.jsonautoload.

La «configuración de publicación» no es un archivo, sino el conjunto de marcas de compilación y definiciones de paquete fijas en scripts/adjust-composer.php:

  • Mapa de destinos. --target=php81 produce nextpdf/backport (restricción >=8.1 <8.5, reemplaza el núcleo más los adaptadores más compat-legacy) y, cuando se incluye, nextpdf/backport-pro. --target=php74 produce nextpdf/backport (restricción >=7.4 <8.1, reemplaza solo nextpdf/core) y no produce ningún paquete Pro.
  • Exclusión. --no-pro excluye el paquete Pro en el destino de PHP 8.1. El destino de PHP 7.4 excluye Pro y todos los adaptadores por construcción.
  • Versión. La compilación escribe el valor de --version (o la etiqueta de publicación con la v inicial eliminada) en el composer.json generado y en CHANGELOG.md.

Comprobado con scripts/build.php y scripts/adjust-composer.php (generatePublicComposer(), generateProComposer(), buildReplace()). La referencia completa de marcas está en /integrations/backport/configuration/.

El compilador se integra en un flujo de publicación mediante los flujos de trabajo de GitHub Actions en .github/workflows/. 0-ci.yml valida cada cambio en cualquiera de las ramas permanentes con PHPStan, las pruebas de reglas y una ejecución en seco. build.yml produce y publica la distribución cuando recibe un evento repository-dispatch source-release o una ejecución manual. El modelo operativo completo —desencadenantes, carriles, matriz de validación y publicación compartida— se documenta en /integrations/backport/production-usage/.

El proceso de publicación es la prueba de humo de la integración. Tras la compilación, el flujo de trabajo configura el ejecutor con el PHP de destino y ejecuta php -l sobre el código fuente emitido. A continuación, instala y ejercita el paquete producido en toda la matriz de validación (PHP 8.1-8.4 para el carril de PHP 8.1, PHP 7.4 y 8.0 para el carril de PHP 7.4). Una distribución que un tiempo de ejecución de destino rechazaría no llega a publicarse. Comprobado con .github/workflows/build.yml (los trabajos de comprobación de sintaxis y validate-*). También es posible ejecutar localmente la prueba de humo de la salida producida del mismo modo, con el comando de Docker que imprime la etapa de validación; consulte /integrations/backport/quickstart/.

La superficie pública del compilador es el orquestador de CLI y sus alias de scripts de Composer, no un ejecutable en bin/.

Punto de entradaResuelve aPropósito
composer buildphp scripts/build.phpCompilación completa
composer build:dryphp scripts/build.php --dry-runCompilación de ejecución en seco
composer testphpunitConjuntos de fixtures de reglas
composer analysephpstan analyse rector/rules scripts --level=10Analizar estáticamente el código de compilación

Comprobado con composer.jsonscripts. Los puntos de entrada del paquete producido son los símbolos originales de la API NextPDF\, sin cambios introducidos por el backport. El paquete reemplaza los paquetes de origen y carga automáticamente el árbol fusionado a través del único prefijo PSR-4.

  • /integrations/backport/overview/ — qué es el compilador y qué produce.
  • /integrations/backport/boot-and-discovery/ — secuencia de arranque y descubrimiento de origen.
  • /integrations/backport/install/ — instalación en el host de compilación y en la aplicación consumidora.
  • /integrations/backport/production-usage/ — el proceso de publicación.