Загрузка и обнаружение в backport-сборке NextPDF
Инструменты сборки — НЕ зависимость времени выполнения. На этой странице описано, как сборщик запускается на хосте мейнтейнера или хосте непрерывной интеграции (CI). Потребляющие приложения никогда не загружают этот код.
Сборщик не использует фреймворк, контейнер внедрения зависимостей или автообнаружение поставщиков служб. Вместо этого PHP-скрипты для интерфейса командной строки (CLI) подключаются через require_once и автозагрузчик PSR-4 от Composer. Здесь у термина “обнаружение” два конкретных значения: какие исходные репозитории читает этап слияния и как оркестратор выбирает конфигурацию Rector для целевой платформы.
Обзор конвейера сборки
Заголовок раздела «Обзор конвейера сборки»Оркестратор — это scripts/build.php. Он запускает сборку, а затем по порядку выполняет пять этапов. У каждого этапа есть контрольная проверка, поэтому первый же сбой останавливает сборку:
- Слияние исходников — копирование исходных репозиториев в одно дерево.
- Запуск понижения версии Rector — один проход для PHP 8.1; два прохода и доработки для PHP 7.4.
- Генерация
composer.json— запись сгенерированного манифеста пакета с его картойreplace. - Копирование статических ресурсов — копирование лицензии и сгенерированного журнала изменений.
- Проверка результата — подсчёт созданных файлов PHP; основная проверка синтаксиса выполняется позже в CI.
Сверено с scripts/build.php (run(), step()). Подробности выбора правил см. в /integrations/backport/configuration/, а сведения о проверке CI — в /integrations/backport/production-usage/.
Обнаружение исходных модулей
Заголовок раздела «Обнаружение исходных модулей»Обнаружение исходников не управляется манифестом. scripts/merge-sources.php использует фиксированную карту, где ключи соответствуют именам репозиториев; карта выбирается по целевой платформе.
Для целевой платформы PHP 8.1 карта включает nextpdf (ядро), nextpdf-Artisan, nextpdf-compat-legacy, nextpdf-Laravel, nextpdf-Symfony, nextpdf-CodeIgniter и nextpdf-Pro, когда включён Pro. Для целевой платформы PHP 7.4 карта сужается до одного nextpdf. Сборщик разрешает каждый репозиторий как соседний каталог в корне --source-dir. Перед копированием он проверяет каждый ожидаемый репозиторий. Если какой-либо отсутствует, слияние прерывается и сообщает его имя и путь. Сверено с scripts/merge-sources.php (MergeSources::__construct(), run()).
Слияние размещает ядро в src/, а каждый адаптер — в его подкаталоге с пространством имён (src/Artisan/, src/Laravel/ и т. д.). Pro помещается в отдельное дерево pro/src/, чтобы сборка могла выпустить его как отдельный пакет. Сверено с MergeSources (mergeCore(), mergeArtisan(), mergePro()).
Последовательность загрузки
Заголовок раздела «Последовательность загрузки»scripts/build.phpвыполняется через PHP CLI SAPI. Он подключает файлыmerge-sources.phpиadjust-composer.phpчерезrequire_once.- Точка входа CLI читает параметры через
getopt()—--version,--source-dir,--output-dir,--target,--dry-run,--no-pro. - Создаётся экземпляр
Build. Конструктор сверяет--targetс['php74', 'php81']и при недопустимом значении вызываетInvalidArgumentExceptionещё до начала каких-либо действий. Для целевой платформы PHP 7.4 он принудительно оставляет в результате только ядро и отключает Pro. Build::run()выполняет пять этапов и завершается со статусом 0 при успехе или 1 при первом сбое.
Сверено с scripts/build.php (точка входа CLI, Build::__construct(), run()).
Привязки контейнера
Заголовок раздела «Привязки контейнера»Неприменимо. Сборщик — это инструмент CLI. У него нет контейнера внедрения зависимостей и сервисного контейнера фреймворка. Загрузка выполняется через явные вызовы require_once и автозагрузку Composer PSR-4 для NextPDF\Backport\ (правила) и NextPDF\Backport\Scripts\ (скрипты). Сверено с composer.jsonautoload и вызовами require_once в scripts/build.php.
Порядок разрешения конфигурации
Заголовок раздела «Порядок разрешения конфигурации»Отдельного файла конфигурации нет. Конфигурация формируется из флагов CLI, которые разрешаются по значениям по умолчанию, встроенным в скрипт:
- Флаг CLI, если он указан.
- Значение по умолчанию в блоке разбора
getopt()(например, целевая платформа по умолчанию —php81, а версия по умолчанию —2.0.0). - Поведение, которое конструктор определяет по целевой платформе (PHP 7.4 принудительно ограничивает вывод только ядром и без Pro, независимо от
--no-pro).
Сверено с scripts/build.php (точка входа CLI и Build::__construct()). Полный справочник флагов находится в /integrations/backport/configuration/.
Диагностика
Заголовок раздела «Диагностика»Оркестратор предоставляет собственную диагностику. Выполните пробный запуск (composer build:dry), чтобы вывести исходные репозитории, которые были бы прочитаны, и назначение каждого этапа без записи данных. Каждый этап выводит галочку успеха или сбой с указанием имени. Отдельной подкоманды diagnose нет, как и точки входа bin/. Сборщик запускается через scripts/build.php или его псевдонимы в скриптах Composer. Сверено с scripts/build.php (step(), ветви dryRun), scripts/merge-sources.php (путь пробного запуска run()) и composer.jsonscripts.
См. также
Заголовок раздела «См. также»- /integrations/backport/overview/ — что такое сборщик и что он создаёт.
- /integrations/backport/integration/ — контракт интеграции с хостом сборки.
- /integrations/backport/configuration/ — конфигурации Rector и справочник флагов.
- /integrations/backport/troubleshooting/ — поэтапный справочник по сбоям.