콘텐츠로 이동

NextPDF 백포트 빌더 설치

빌드 도구입니다 — 런타임 의존성이 아닙니다. 빌더는 유지보수자 워크스테이션이나 CI 러너에 설치됩니다. 다운스트림 애플리케이션은 빌더를 설치하지 않습니다. 빌더가 생성한 패키지만 설치합니다.

두 대상은 서로 다른 항목을 설치합니다:

  • 유지보수자 또는 CI 운영자는 이 저장소를 클론하고 빌드 의존성을 설치합니다. nextpdf/backport-builder가 설치되는 유일한 경우입니다.
  • 구형 PHP 런타임에서 실행되는 다운스트림 애플리케이션은 릴리스 채널에서 생성된 nextpdf/backport 패키지를 설치합니다. 애플리케이션은 이 저장소를 전혀 다루지 않습니다.

이 페이지는 두 경우를 모두 다룹니다. 자신의 역할에 해당하는 섹션을 확인합니다.

의존성제약 조건기준 출처
PHP>=8.4 <9.0composer.jsonrequire.php
Composer2.6+CONTRIBUTING.md 환경 표
rector/rector^2.0composer.jsonrequire-dev
phpstan/phpstan^2.1composer.jsonrequire-dev
phpunit/phpunit^13.0composer.jsonrequire-dev

지속적 통합(CI) 워크플로는 빌드 작업과 드라이런 작업 모두에 PHP 8.5를 프로비저닝합니다. >=8.4 <9.0 범위 내의 어떤 PHP 버전을 사용하는 빌드 호스트든 Composer 제약 조건을 충족합니다. 파서는 소스에서 사용하는 최신 구문을 처리할 수 있어야 합니다. .github/workflows/0-ci.yml에 대해 검증되었습니다.

  1. 저장소를 클론하고 빌드 대상 브랜치를 체크아웃합니다. PHP74가 기본 브랜치이며, PHP 7.4 코어 전용 배포본을 생성합니다. PHP81은 모든 어댑터를 포함한 PHP 8.1 배포본을 생성합니다.

    Terminal window
    git clone https://github.com/nextpdf-labs/backport.git
    cd backport
    git checkout PHP74
  2. 빌드 의존성을 설치합니다. --no-dev를 전달하지 마십시오. Rector 엔진, PHPStan, PHPUnit은 require-dev에 있으며, 이들이 없으면 빌드를 실행할 수 없습니다.

    Terminal window
    composer install --prefer-dist --no-progress
  3. 툴체인이 정상적으로 해석되는지 확인합니다. analyse 스크립트는 rector/rulesscripts에 대해 PHPStan을 레벨 10으로 실행합니다. 문제없이 실행되면 출력물을 생성하기 전에 빌드 코드 자체의 견고성을 확인할 수 있습니다.

    Terminal window
    composer analyse
  4. 규칙 픽스처 테스트를 실행합니다. 각 커스텀 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 런타임에서 실행되는 프로젝트는 이 빌더가 아니라 생성된 배포본을 설치합니다.

Terminal window
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())에 대해 검증되었습니다.

Terminal window
composer require nextpdf/backport

PHP 7.4 배포본은 코어 전용입니다. 이 배포본은 >=7.4 <8.1 제약 조건을 가지며 nextpdf/core만 대체합니다. 프레임워크 어댑터, tcpdf 호환 레이어, Pro는 PHP 7.4 배포본에 포함되지 않습니다. scripts/adjust-composer.phpscripts/build.php(PHP 7.4 대상은 코어 전용을 강제함)에 대해 검증되었습니다. 프레임워크 어댑터가 필요한 프로젝트에는 PHP 8.1 이상이 필요합니다.

Terminal window
composer require nextpdf/backport-pro

Pro 배포본은 별도의 패키지인 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/ — 첫 드라이런과 전체 빌드.