Перейти к содержимому

Интеграция бэкпорта NextPDF

Это только инструмент сборки, а не зависимость времени выполнения. Сопровождающие используют этот пакет, чтобы создавать бэкпорт-дистрибутивы NextPDF для PHP (PHP: Hypertext Preprocessor) 7.4 и PHP 8.1. Приложения никогда не должны добавлять этот пакет как зависимость времени выполнения.

Есть две разные точки интеграции. Репозиторий сборщика подключается к процессу выпуска на узле сборки. Приложение-потребитель добавляет в своё дерево зависимостей только созданный пакет — nextpdf/backport. Сам сборщик никогда не попадает в дерево зависимостей приложения.

Поскольку сборщик объявляет "type": "project" в composer.json, работайте с ним как с репозиторием проекта, а не как с библиотекой. Подключайте его через клонирование репозитория и установку зависимостей для разработки, а не через composer require:

Окно терминала
git clone https://github.com/nextpdf-labs/backport.git
cd backport
git checkout PHP74
composer install --prefer-dist --no-progress

Переключитесь на ветку той цели, которую планируете собрать. Используйте PHP74 (по умолчанию) для дистрибутива PHP 7.4, содержащего только ядро. Используйте PHP81 для дистрибутива PHP 8.1 со всеми адаптерами. Не передавайте --no-dev. Для сборки нужны движок Rector, PHPStan и PHPUnit — это dev-зависимости. Проверено по composer.json (type, require-dev) и по модели двух веток в /integrations/backport/overview/.

У сборщика нет автообнаружения для фреймворков. Во время сборки scripts/build.php загружает Rector и три пользовательских правила для абстрактного синтаксического дерева через явные вызовы require_once и автозагрузку Composer PHP Standards Recommendation 4 (PSR-4). Полная последовательность загрузки и обнаружения исходных модулей описана в /integrations/backport/boot-and-discovery/.

Неприменимо. Сборщик — это инструмент с интерфейсом командной строки (CLI), без контейнера внедрения зависимостей. Проверено по структуре репозитория и composer.jsonautoload.

“Конфигурация публикации” — это не отдельный файл, а набор флагов сборки и фиксированные определения пакетов в scripts/adjust-composer.php:

  • Карта целей. --target=php81 создаёт nextpdf/backport (ограничение >=8.1 <8.5, заменяет ядро, адаптеры и compat-legacy) и, если он включён, nextpdf/backport-pro. --target=php74 создаёт nextpdf/backport (ограничение >=7.4 <8.1, заменяет только nextpdf/core), без Pro.
  • Исключение. --no-pro исключает пакет Pro для цели PHP 8.1. По своей конструкции цель PHP 7.4 исключает Pro и все адаптеры.
  • Версия. Сборка записывает --version (или тег выпуска после удаления ведущего v) в сгенерированные composer.json и CHANGELOG.md.

Это поведение проверено по scripts/build.php и scripts/adjust-composer.php (generatePublicComposer(), generateProComposer(), buildReplace()). Полный справочник флагов приведён в /integrations/backport/configuration/.

Сборщик подключается к процессу выпуска через рабочие процессы GitHub Actions в .github/workflows/. 0-ci.yml проверяет каждое изменение в каждой постоянной ветке с помощью PHPStan, тестов правил и пробного прогона. build.yml создаёт и выпускает дистрибутив, когда получает событие repository-dispatch source-release или запускается вручную. Полная модель работы — триггеры, дорожки, матрица проверки и общий выпуск — описана в /integrations/backport/production-usage/.

Конвейер выпуска и есть интеграционный дымовой тест. После завершения сборки рабочий процесс переключает среду на целевую версию PHP и запускает php -l по всему сгенерированному исходному коду. Затем он устанавливает и проверяет созданный пакет по всей матрице проверки (PHP 8.1–8.4 для дорожки PHP 8.1, PHP 7.4 и 8.0 для дорожки PHP 7.4). Дистрибутив, отклонённый целевой средой выполнения, не доходит до выпуска. Проверено по .github/workflows/build.yml (задания проверки синтаксиса и validate-*). Локально созданный результат можно проверить дымовым тестом таким же образом с помощью команды Docker, которую выводит этап проверки, — см. /integrations/backport/quickstart/.

Публичная поверхность сборщика — это CLI-оркестратор и алиасы скриптов Composer, а не исполняемый файл bin/.

Точка входаРазрешается вНазначение
composer buildphp scripts/build.phpЗапустить полную сборку
composer build:dryphp scripts/build.php --dry-runЗапустить пробную сборку
composer testphpunitЗапустить наборы фикстур для правил
composer analysephpstan analyse rector/rules scripts --level=10Проанализировать код сборки

Проверено по composer.jsonscripts. Пакет-потребитель предоставляет исходные символы программного интерфейса приложения (API) NextPDF\ без изменений со стороны бэкпорта. Пакет заменяет исходные пакеты и автоматически загружает объединённое дерево через единый префикс PSR-4.

  • /integrations/backport/overview/ — что такое сборщик и что он создаёт.
  • /integrations/backport/boot-and-discovery/ — последовательность загрузки и обнаружение исходного кода.
  • /integrations/backport/install/ — установка на узле сборки и у потребителя.
  • /integrations/backport/production-usage/ — конвейер выпуска.