コンテンツにスキップ

NextPDF Backport Builder のインストール

これはビルド用ツールであり、ランタイム依存関係ではありません。ビルダーは、メンテナーのワークステーションまたは CI ランナーにインストールします。下流アプリケーションがインストールするのはビルダーではなく、ビルダーが生成したパッケージです。

利用者は 2 種類あり、それぞれインストールするものが異なります。

  • メンテナーまたは 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

継続的インテグレーションのワークフローでは、ビルドジョブとドライランジョブの両方に PHP 8.5 をプロビジョニングします。ビルドホストの PHP バージョンは、>=8.4 <9.0 の範囲内であれば 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/ に進んでください。

ビルドでは、複数のソースリポジトリを 1 つのツリーにマージします。マージスクリプトは、それらが単一のソースルート配下の兄弟ディレクトリとして配置され、名前で参照できることを前提とします。PHP 8.1 ターゲットでは、nextpdf(コア)、nextpdf-Artisannextpdf-compat-legacynextpdf-Laravelnextpdf-Symfonynextpdf-CodeIgniter、そして Pro を含める場合は nextpdf-Pro を読み込みます。PHP 7.4 ターゲットでは、nextpdf のみを読み込みます。scripts/merge-sources.phpMergeSources::__construct())で検証済みです。ソースルートは --source-dir で指定します。フラグのリファレンスについては、/integrations/backport/configuration/ を参照してください。

古い PHP ランタイムで動作するプロジェクトは、このビルダーではなく、生成されたディストリビューションをインストールします。

Terminal window
composer require nextpdf/backport

インストールされたパッケージには制約 >=8.1 <8.5 があり、nextpdf/corenextpdf/artisannextpdf/laravelnextpdf/symfonynextpdf/codeigniter、そして nextpdf/compat-legacy を置き換えます。アプリケーションコード側では、引き続き NextPDF\ 名前空間をそのままインポートします。パッケージは、単一の PSR-4 プレフィックス NextPDF\src/ にマッピングし、それを通じてマージされたツリーをオートロードします。PSR-4 オートローダーは、相対クラス名を、そのプレフィックスに対応して登録されたベースディレクトリへ付加します(PHP-FIG PSR-4)。scripts/adjust-composer.phpbuildPublicAutoloadMap()buildReplace())で検証済みです。

Terminal window
composer require nextpdf/backport

PHP 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 以降が必要です。

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.phpgenerateProComposer())で検証済みです。

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.phpgeneratePublicComposer())で検証済みです。

  • /integrations/backport/configuration/ — Rector の設定、カスタムルール、ビルドフラグのリファレンス。
  • /integrations/backport/quickstart/ — 最初のドライランとフルビルド。