コンテンツにスキップ

NextPDF バックポート連携

このパッケージはビルドツールであり、ランタイム依存ではありません。メンテナーはこのパッケージを使って、NextPDF の PHP 7.4 および PHP 8.1 バックポート配布物を生成します。アプリケーションは、このパッケージをランタイム依存として追加してはなりません。

連携ポイントは明確に 2 つに分かれます。ビルドホストは、ビルダーリポジトリをリリースフローに組み込みます。下流アプリケーションは、生成されたパッケージである 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.jsontyperequire-dev)と、/integrations/backport/overview/ のデュアルブランチモデルに照らして検証済みです。

フレームワークの自動検出はありません。ビルド時には、scripts/build.php が明示的な require_once と Composer の PSR-4 オートロードを通じて、Rector と 3 つのカスタム抽象構文木ルールをつなぎ込みます。完全なブートシーケンスとソースモジュールの検出については、/integrations/backport/boot-and-discovery/ に記載されています。

該当しません。ビルダーは、依存性注入コンテナを持たない CLI ツールです。リポジトリ構造と composer.jsonautoload に照らして検証済みです。

「公開設定」はファイルではありません。ビルドフラグの集合と、scripts/adjust-composer.php 内の固定されたパッケージ定義を指します。

  • ターゲットマップ。 --target=php81nextpdf/backport(制約 >=8.1 <8.5、コア、アダプター群、compat-legacy を置き換え)を生成し、含まれている場合は nextpdf/backport-pro も生成します。--target=php74nextpdf/backport(制約 >=7.4 <8.1nextpdf/core のみを置き換え)を生成し、Pro は含みません。
  • 除外。 --no-pro は、PHP 8.1 ターゲットで Pro パッケージを除外します。PHP 7.4 ターゲットは、構造上、Pro とすべてのアダプターを除外します。
  • バージョン。 ビルドは --version(または先頭の v を取り除いたリリースタグ)を、生成された composer.jsonCHANGELOG.md に書き込みます。

scripts/build.phpscripts/adjust-composer.phpgeneratePublicComposer()generateProComposer()buildReplace())に照らして検証済みです。完全なフラグリファレンスは /integrations/backport/configuration/ にあります。

ビルダーは、.github/workflows/ 内の GitHub Actions ワークフローを通じてリリースフローに組み込まれます。0-ci.yml は、いずれかの恒久ブランチへのすべての変更を、PHPStan、ルールテスト、ドライランでゲートします。build.yml は、source-release の repository-dispatch イベント、または手動ディスパッチで配布物を生成してリリースします。完全な運用モデル(トリガー、レーン、検証マトリクス、共有リリース)については、/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(syntax-check ジョブと validate-* ジョブ)に照らして検証済みです。検証ステージが出力する Docker コマンドを使えば、ローカルで生成した出力も同じ方法でスモークテストできます。/integrations/backport/quickstart/ を参照してください。

ビルダーの公開インターフェースは、CLI オーケストレーターとその Composer スクリプトエイリアスであり、bin/ の実行ファイルではありません。

エントリーポイント解決先目的
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/ — リリースパイプライン。