NextPDF バックポート連携
このパッケージはビルドツールであり、ランタイム依存ではありません。メンテナーはこのパッケージを使って、NextPDF の PHP 7.4 および PHP 8.1 バックポート配布物を生成します。アプリケーションは、このパッケージをランタイム依存として追加してはなりません。
連携ポイントは明確に 2 つに分かれます。ビルドホストは、ビルダーリポジトリをリリースフローに組み込みます。下流アプリケーションは、生成されたパッケージである nextpdf/backport を、自身の依存ツリーに組み込みます。ビルダー自体がアプリケーションの依存ツリーに入ることは決してありません。
インストール(ビルドホストのみ)
「インストール(ビルドホストのみ)」という見出しのセクションビルダーは composer.json で "type": "project" を宣言しているため、ライブラリではなくプロジェクトリポジトリです。composer require ではなく、クローンして dev 依存を含めてインストールする形で組み込みます。
git clone https://github.com/nextpdf-labs/backport.gitcd backportgit checkout PHP74composer 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 と 3 つのカスタム抽象構文木ルールをつなぎ込みます。完全なブートシーケンスとソースモジュールの検出については、/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.jsonとCHANGELOG.mdに書き込みます。
scripts/build.php と scripts/adjust-composer.php(generatePublicComposer()、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 build | php scripts/build.php | フルビルド |
composer build:dry | php scripts/build.php --dry-run | ドライランビルド |
composer test | phpunit | ルールフィクスチャスイート |
composer analyse | phpstan 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/ — リリースパイプライン。