#Composer 2.0 リリースでは、パフォーマンスの最適化、新機能、アップグレード ガイドが提供されます
この新しいバージョンには多くの新機能が追加されており、さらに重要なことに、パフォーマンスも大幅に向上しています。ご興味がございましたら、Composer GitHub リポジトリで詳細なアップグレードの詳細を確認してください。ここでは、人気のある PHP プロジェクトの新旧バージョンのパフォーマンス比較、主な新機能、およびアップグレード方法について簡単に紹介します。コンポーザー2.0。パフォーマンスの最適化
新しいバージョンでは、Composer と packagegist.org 間で使用されるプロトコルから依存関係解決のリファクタリングに至るまで、ほぼすべてのコードがオーバーホールされます。ファイルを並行してダウンロードするためのcurlの使用や、制約評価の最適化(つまり、拡張パッケージのバージョン管理)など。これらのリファクタリングにより、速度とメモリ使用量の両方の点でComposer 2.0が大幅に改善されました。 ただし、これらの改善の実際のパフォーマンスは、特定の使用シナリオによって異なります。一部のプロジェクトでは 50% のパフォーマンス向上の公式レポートが得られていますが、これを根拠として使用して、適用される正確な数値を与えることはできません。しかし、1 つ確かなことは、Composer 2.0 をまだ使用したことがない場合は、新しいバージョンの使用感に驚かれることでしょう。 さらに、Composer は変更された拡張パッケージに対応するメタデータのみをロードするようになるため、require/remove および一部の更新が以前よりもはるかに高速になります。 以下は、現在人気のある PHP プロジェクトにおける Composer 1 と Composer 2 の速度最適化の比較です: ご覧のとおり、Laravel プロジェクトの場合、性能が約4倍向上しました。私は個人的に古いバージョンと新しいバージョンを使用して Laravel プロジェクトを初期化する経験をしましたが、実際に肉眼で明らかな大幅な速度の向上がありました。主な新機能の概要
Composer 2.0 のいくつかの重要なアップデートの概要を説明します。アーキテクチャの調整
依存関係の更新が内部で実行される方法がリファクタリングされました。より確定的な更新を確認できるようになりました。更新が完了すると、インストール プロセスが自動的に同時に実行されます。ネットワークの問題により、プロセスがインストールの途中で終了しました。新しいランタイム機能
vendor/autoload.php は、初期化中に新しいプラットフォーム検出ステップを追加します。主に、現在の PHP バージョンと拡張機能パッケージのバージョンが一致するかどうかをチェックします。一致しない場合 一致する場合、初期化は失敗します。 Composer 2.0 プロジェクトでは、vendor/composer ディレクトリに新しい InstalledVersions クラスが表示されます。このクラスは各プロジェクトに自動的にロードされ、実行時に有効になります。これを使用して、実行時拡張パッケージを確認できます。プロジェクトとそのバージョン番号で有効です。 コードがこれらの新しいランタイム機能に依存している場合は、composer.json の require 構成項目に "composer-runtime-api": "^2.0" 依存関係ステートメントを追加できます。エラー レポートの最適化
Composer 2.0 では、依存関係を解決できない場合のエラー レポートの表示が最適化され、エラー メッセージが短く、明確になり、繰り返しが少なくなりました。一時的な制約のある部分的な更新
これで、composer update Vendor/package:1.0.* を実行して、指定された拡張機能パッケージ (vendor/ など) のバージョンをアップグレードできるようになります。ここにパッケージを追加すると、composer.json も更新されず、composer.lock ファイルも更新されません。この一時的な制約を追加し、すべての依存関係を同時に更新したい場合は、composer update --with Vendor を使用する必要があります/package:1.0.* コマンド。Composer 2.0 へのアップグレード
Composer 2.0 へのアップグレードは非常に簡単で、次のコマンドを実行するだけです:composer self-update --2アップグレード後、一部の Composer 1.0 バージョンのプラグインはまだ Composer 2.0 をサポートしていない可能性があり、新しいプラットフォーム検出メカニズムにより、ランタイム PHP バージョンと拡張パックのバージョンが一致するかどうかが検出されることに注意してください。これらはすべてです。以前は通常の拡張パッケージの依存関係の解決で問題が発生する可能性があります。composer self-update --rollback または COMPOSER self-update --1 コマンドを使用して、以前の古いバージョンの Composer にロールバックするか、詳細については、Composer アップグレード ガイドを参照してください。