콘텐츠로 이동

NextPDF 백포트 통합

빌드 도구입니다 — 런타임 의존성이 아닙니다. 관리자는 이 패키지를 사용하여 NextPDF의 PHP 7.4 및 PHP 8.1 백포트 배포본을 생성합니다. 애플리케이션은 이 패키지를 런타임 의존성으로 절대 추가해서는 안 됩니다.

통합 지점은 두 가지로 분리됩니다. 빌드 호스트는 빌더 저장소를 릴리스 흐름에 통합합니다. 다운스트림 애플리케이션생성된 패키지인 nextpdf/backport을(를) 자체 의존성 트리에 통합합니다. 빌더는 애플리케이션의 의존성 트리에 절대 포함되지 않습니다.

빌더는 composer.json에서 "type": "project"을(를) 선언하므로 라이브러리가 아니라 프로젝트 저장소입니다. 따라서 composer require가 아니라 클론과 dev 설치 방식으로 통합합니다:

Terminal window
git clone https://github.com/nextpdf-labs/backport.git
cd backport
git checkout PHP74
composer install --prefer-dist --no-progress

생성하려는 대상에 해당하는 브랜치를 체크아웃합니다. PHP 7.4 코어 전용 배포본에는 PHP74(기본값)를 사용합니다. 모든 어댑터를 포함하는 PHP 8.1 배포본에는 PHP81을(를) 사용합니다. --no-dev를 전달하지 마십시오. 빌드에는 Rector 엔진, PHPStan, PHPUnit가 필요하며, 이들은 dev 의존성입니다. composer.json(type, require-dev) 및 /integrations/backport/overview/.의 이중 브랜치 모델과 대조하여 검증되었습니다.

프레임워크 자동 검색은 없습니다. 빌드 시점에 scripts/build.php가 명시적인 require_once와 Composer PSR-4 자동 로딩을 통해 Rector와 세 개의 사용자 정의 추상 구문 트리 규칙을 연결합니다. 전체 부트 시퀀스와 소스 모듈 검색은 /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는 PHP 8.1 대상에서 Pro 패키지를 제외합니다. PHP 7.4 대상은 구성상 Pro와 모든 어댑터를 제외합니다.
  • 버전. 빌드는 --version(또는 앞의 v를 제거한 릴리스 태그)을(를) 생성된 composer.jsonCHANGELOG.md에 기록합니다.

scripts/build.phpscripts/adjust-composer.php(generatePublicComposer(), generateProComposer(), buildReplace())와 대조하여 검증되었습니다. 전체 플래그 레퍼런스는 /integrations/backport/configuration/.에서 확인할 수 있습니다.

빌더는 .github/workflows/에 있는 GitHub Actions 워크플로를 통해 릴리스 흐름에 통합됩니다. 0-ci.yml은(는) 두 영구 브랜치 중 하나에 대한 모든 변경을 PHPStan, 규칙 테스트, 드라이런으로 게이트합니다. build.yml은(는) source-release 저장소 디스패치 이벤트 또는 수동 디스패치에서 배포본을 생성하고 릴리스합니다. 전체 운영 모델(트리거, 레인, 검증 매트릭스, 공유 릴리스)은 /integrations/backport/production-usage/.에 문서화되어 있습니다.

릴리스 파이프라인이 통합 스모크 테스트 역할을 합니다. 빌드 후 워크플로는 러너를 대상 PHP로 전환하고 생성된 소스 전체에 대해 php -l을(를) 실행합니다. 그런 다음 생성된 패키지를 검증 매트릭스 전체에서 설치하고 실행합니다(PHP 8.1 레인은 PHP 8.1–8.4, PHP 7.4 레인은 PHP 7.4 및 8.0). 대상 런타임이 거부할 배포본은 릴리스에 도달하지 않습니다. .github/workflows/build.yml(구문 검사 및 validate-* 작업)과 대조하여 검증되었습니다. 검증 단계가 출력하는 Docker 명령으로 로컬에서 생성된 출력을 동일한 방식으로 스모크 테스트할 수 있습니다 — /integrations/backport/quickstart/.를 참조하십시오.

빌더의 공개 표면은 bin/ 실행 파일이 아니라 CLI 오케스트레이터와 그 Composer 스크립트 별칭입니다.

진입점해석 대상목적
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를 기준으로 검증되었습니다. 다운스트림 패키지의 진입점은 원래의 NextPDF\ API 심볼이며, 백포트에 의해 변경되지 않습니다. 패키지는 소스 패키지를 대체하고 단일 PSR-4 접두사를 통해 병합된 트리를 자동 로딩합니다.

  • /integrations/backport/overview/ — 빌더가 무엇이고 무엇을 생성하는지.
  • /integrations/backport/boot-and-discovery/ — 부트 시퀀스와 소스 검색.
  • /integrations/backport/install/ — 빌드 호스트와 다운스트림 설치.
  • /integrations/backport/production-usage/ — 릴리스 파이프라인.