NextPDF Backport Builder のインストール
これはビルド用ツールであり、ランタイム依存関係ではありません。ビルダーは、メンテナーのワークステーションまたは CI ランナーにインストールします。下流アプリケーションがインストールするのはビルダーではなく、ビルダーが生成したパッケージです。
利用者は 2 種類あり、それぞれインストールするものが異なります。
- メンテナーまたは 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 |
継続的インテグレーションのワークフローでは、ビルドジョブとドライランジョブの両方に PHP 8.5 をプロビジョニングします。ビルドホストの PHP バージョンは、>=8.4 <9.0 の範囲内であれば 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/ に進んでください。
想定されるソースツリー構成
「想定されるソースツリー構成」という見出しのセクションビルドでは、複数のソースリポジトリを 1 つのツリーにマージします。マージスクリプトは、それらが単一のソースルート配下の兄弟ディレクトリとして配置され、名前で参照できることを前提とします。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\ 名前空間をそのままインポートします。パッケージは、単一の PSR-4 プレフィックス NextPDF\ を src/ にマッピングし、それを通じてマージされたツリーをオートロードします。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 以降が必要です。
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/ — 最初のドライランとフルビルド。