Установка сборщика бэкпортов NextPDF
Устанавливайте этот набор инструментов сборки на рабочей станции сопровождающего или на раннере непрерывной интеграции (CI). Это НЕ зависимость времени выполнения. Приложение-потребитель никогда не устанавливает сборщик; оно устанавливает пакет, который создаёт сборщик.
Для двух аудиторий установка различается:
- Сопровождающий или оператор CI клонирует этот репозиторий и устанавливает его зависимости сборки. Устанавливайте
nextpdf/backport-builderтолько в этом контексте. - Приложение-потребитель в более старой среде выполнения PHP устанавливает сгенерированный пакет
nextpdf/backportиз своего канала выпуска. Оно никогда не обращается к этому репозиторию.
На этой странице описаны оба рабочих процесса. Прочитайте раздел, соответствующий вашей роли.
Установка на узле сборки
Заголовок раздела «Установка на узле сборки»Требования
Заголовок раздела «Требования»| Зависимость | Ограничение | Источник истины |
|---|---|---|
| PHP | >=8.4 <9.0 | composer.jsonrequire.php |
| Composer | 2.6+ | CONTRIBUTING.md, таблица окружения |
rector/rector | ^2.0 | composer.jsonrequire-dev |
phpstan/phpstan | ^2.1 | composer.jsonrequire-dev |
phpunit/phpunit | ^13.0 | composer.jsonrequire-dev |
Рабочий процесс CI подготавливает PHP 8.5 и для сборки, и для задания пробного прогона. Любой узел сборки с версией PHP в диапазоне >=8.4 <9.0 удовлетворяет ограничению Composer. Парсер PHP должен принимать новейший синтаксис, используемый исходным кодом. Проверено по .github/workflows/0-ci.yml.
-
Клонируйте репозиторий, затем переключитесь на ветку целевой платформы, которую хотите собрать.
PHP74— это ветка по умолчанию; она создаёт дистрибутив для PHP 7.4, только с ядром.PHP81создаёт дистрибутив для PHP 8.1 со всеми адаптерами.Окно терминала git clone https://github.com/nextpdf-labs/backport.gitcd backportgit checkout PHP74 -
Установите зависимости сборки. Не передавайте
--no-dev: движок Rector, PHPStan и PHPUnit указаны вrequire-dev, и без них сборка не сможет выполниться.Окно терминала composer install --prefer-dist --no-progress -
Проверьте, что цепочка инструментов корректно разрешается. Скрипт
analyseзапускает PHPStan на уровне 10 поrector/rulesиscripts. Чистый прогон показывает, что сам код сборки исправен, прежде чем вы создадите результат.Окно терминала composer analyse -
Запустите тесты на фикстурах правил. У каждого пользовательского правила Rector есть набор фикстур, который проверяет точное преобразование before/after.
Окно терминала composer test
После шага 4 узел готов к сборке. Команды пробного прогона и полной сборки см. в /integrations/backport/quickstart/.
Ожидаемая структура дерева исходного кода
Заголовок раздела «Ожидаемая структура дерева исходного кода»Сборка объединяет несколько исходных репозиториев в одно дерево. Разместите их как соседние каталоги в общем корне исходного кода; скрипт слияния обращается к каждому каталогу по имени. Для целевой платформы PHP 8.1 он читает nextpdf (ядро), nextpdf-Artisan, nextpdf-compat-legacy, nextpdf-Laravel, nextpdf-Symfony, nextpdf-CodeIgniter и nextpdf-Pro, если включён Pro. Для целевой платформы PHP 7.4 он читает только nextpdf. Проверено по scripts/merge-sources.php (MergeSources::__construct()). Укажите корень исходного кода с помощью --source-dir. Справочник по флагам см. в /integrations/backport/configuration/.
Использование созданного пакета на стороне потребителя
Заголовок раздела «Использование созданного пакета на стороне потребителя»Если вы сопровождаете проект в более старой среде выполнения PHP, устанавливайте созданный дистрибутив, а не этот сборщик.
PHP с 8.1 по 8.3
Заголовок раздела «PHP с 8.1 по 8.3»composer require nextpdf/backportУстановленный пакет объявляет ограничение >=8.1 <8.5 и заменяет nextpdf/core, nextpdf/artisan, nextpdf/laravel, nextpdf/symfony, nextpdf/codeigniter и nextpdf/compat-legacy. Код приложения продолжает импортировать пространство имён NextPDF\ без изменений. Пакет автоматически загружает объединённое дерево через единый префикс PHP Standard Recommendation 4 (PSR-4) NextPDF\, сопоставленный с src/. Автозагрузчик PSR-4 добавляет относительное имя класса к базовому каталогу, зарегистрированному для префикса (PHP-FIG PSR-4). Проверено по scripts/adjust-composer.php (buildPublicAutoloadMap(), buildReplace()).
PHP с 7.4 по 8.0
Заголовок раздела «PHP с 7.4 по 8.0»composer require nextpdf/backportДистрибутив для PHP 7.4 содержит только ядро. Он объявляет ограничение >=7.4 <8.1 и заменяет только nextpdf/core. Адаптеры фреймворков, слой совместимости с tcpdf и Pro не включены в дистрибутив для PHP 7.4. Проверено по scripts/adjust-composer.php и scripts/build.php (целевая платформа PHP 7.4 принудительно включает только ядро). Если проекту нужен адаптер фреймворка, требуется PHP 8.1 или новее.
Издание Pro
Заголовок раздела «Издание Pro»composer require nextpdf/backport-proДистрибутив Pro — это отдельный пакет, nextpdf/backport-pro, с лицензией proprietary. Он требует nextpdf/backport с совпадающей версией major.minor и добавляет phpseclib/phpseclib ^3.0. Пакет создаётся только для целевой платформы PHP 8.1. Проверено по scripts/adjust-composer.php (generateProComposer()).
Дистрибутив для PHP 7.4 и дистрибутив Pro взаимоисключающи: скрипт сборки не создаёт сборки Pro для PHP 7.4.
Полифилы в созданном пакете
Заголовок раздела «Полифилы в созданном пакете»Сгенерированный composer.json требует пакеты symfony/polyfill-*, чтобы более новые функции стандартной библиотеки были доступны в целевой среде выполнения. Целевая платформа PHP 8.1 требует полифилы для PHP 8.2 — 8.5. Целевая платформа PHP 7.4 также требует полифилы для PHP 8.0 и 8.1. Это зависимости времени выполнения созданного пакета, а не сборщика. Проверено по scripts/adjust-composer.php (generatePublicComposer()).
- /integrations/backport/configuration/ — конфигурация Rector, пользовательские правила и справочник по флагам сборки.
- /integrations/backport/quickstart/ — ваш первый пробный прогон и полная сборка.