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를 프로비저닝합니다. >=8.4 <9.0 범위 내의 어떤 PHP 버전을 사용하는 빌드 호스트든 Composer 제약 조건을 충족합니다. 파서는 소스에서 사용하는 최신 구문을 처리할 수 있어야 합니다. .github/workflows/0-ci.yml에 대해 검증되었습니다.
-
저장소를 클론하고 빌드 대상 브랜치를 체크아웃합니다.
PHP74가 기본 브랜치이며, PHP 7.4 코어 전용 배포본을 생성합니다.PHP81은 모든 어댑터를 포함한 PHP 8.1 배포본을 생성합니다.Terminal window git clone https://github.com/nextpdf-labs/backport.gitcd backportgit checkout PHP74 -
빌드 의존성을 설치합니다.
--no-dev를 전달하지 마십시오. Rector 엔진, PHPStan, PHPUnit은require-dev에 있으며, 이들이 없으면 빌드를 실행할 수 없습니다.Terminal window composer install --prefer-dist --no-progress -
툴체인이 정상적으로 해석되는지 확인합니다.
analyse스크립트는rector/rules와scripts에 대해 PHPStan을 레벨 10으로 실행합니다. 문제없이 실행되면 출력물을 생성하기 전에 빌드 코드 자체의 견고성을 확인할 수 있습니다.Terminal window composer analyse -
규칙 픽스처 테스트를 실행합니다. 각 커스텀 Rector 규칙에는 정확한 before/after 변환을 검증하는 픽스처 스위트가 있습니다.
Terminal window composer test
4단계가 끝나면 호스트는 빌드할 준비가 됩니다. 드라이런 및 전체 빌드 호출은 /integrations/backport/quickstart/에서 이어서 확인합니다.
소스 트리 요구 사항
섹션 제목: “소스 트리 요구 사항”빌드는 여러 소스 저장소를 하나의 트리로 병합합니다. 병합 스크립트는 이들이 단일 소스 루트 아래의 형제 디렉터리로 배치되어 있다고 가정하며, 이름으로 참조합니다. PHP 8.1 대상의 경우 nextpdf(코어), nextpdf-Artisan, nextpdf-compat-legacy, nextpdf-Laravel, nextpdf-Symfony, nextpdf-CodeIgniter를 읽으며, Pro가 포함된 경우 nextpdf-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\ 네임스페이스를 변경 없이 계속 임포트합니다. 이 패키지는 병합된 트리를 src/에 매핑된 단일 PSR-4 접두사 NextPDF\를 통해 오토로드합니다. 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/backportPHP 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-proPro 배포본은 별도의 패키지인 nextpdf/backport-pro이며, proprietary 라이선스를 갖습니다. 이 배포본은 일치하는 major.minor 버전의 nextpdf/backport를 요구하며 phpseclib/phpseclib ^3.0을 추가합니다. 이 배포본은 PHP 8.1 대상에서만 생성됩니다. scripts/adjust-composer.php(generateProComposer())에 대해 검증되었습니다.
PHP 7.4 배포본과 Pro 배포본은 상호 배타적입니다. 빌드 스크립트의 구조상 PHP 7.4 Pro 빌드는 존재하지 않습니다.
생성된 패키지의 폴리필
섹션 제목: “생성된 패키지의 폴리필”생성된 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/ — 첫 드라이런과 전체 빌드.