2020年10月24日 Composr 2.0.0 がリリースされました🙌
半年前の記事から少し気になってましたが、思ったより早くリリースされて嬉しいです!
今回はこちらのリリース記事の内容を要約してご紹介します!
Composerとは?
Composerとは、PHPのパッケージ管理ツールです。
composer.json
に書かれたパッケージ及び依存関係にあるパッケージも含めコマンド一発でインストールしてくれます。
Composerを使っていないPHPプロジェクトはほぼほぼないと言っても良いでしょう。
そんな素敵なツールのメジャーバージョンアップニュースです。
変更点
記事の内容を要約してご紹介します。
詳細な変更点については、チェンジログをご覧ください。
パフォーマンスの向上
- Composerとpackagist.orgの間で使用されるプロトコル及び依存関係の解決
- curlと制約評価の最適化を使用してファイルを並行してダウンロード
- 速度とメモリ使用量の両方の点で大幅な改善
- 一部のプロジェクトで両方に対して50%を超える改善
- require/remove および部分的な更新がはるかに高速
- Composerは変更されているパッケージのメタデータのみをロードするようになったため
初期更新+インストール(ブートストラップされたプロジェクト、空のキャッシュ)の時間は、ext-curlが有効になっているComposer 2で使用される時間が約60%少ないことを示しています。
ランタイム機能
- 初期化時にプラットフォームチェックステップを追加
- 新しく
Composer\InstalledVersions
クラスを追加 - 詳細はランタイムドキュメントを参照
ソースコードがランタイム機能のいずれかに依存する場合は、
"composer-runtime-api": "^2.0"
を composer.json
に追加する必要があります。もちろん、Composer 2.xでインストールする必要があります。
エラー報告の改善
- 依存関係を解決できない場合に表示されるエラーレポートを改善
- メッセージがより短く、より明確に、エラーの繰り返しが減少
一時的な制約のある部分的な更新
-
composer update vendor/package:1.0.*
- vendor配下のみ更新される
-
composer.json
,composer.lock
は更新されない
-
composer update --with vendor/package:1.0.*
-
--with
オプションを付ける - vendor配下及び、
composer.json
,composer.lock
は更新される
-
Composer 1.x から 2.x への移行
- Composer 2.0は、Composer 1.xと同様に、PHP5.3以降をサポート
- composer.lock ファイルはバージョン間で相互運用可能であるため、2.0にアップグレードして、必要に応じて簡単にロールバックできます。
- ほとんどのコマンドと引数は同じままであり、Composerについて知っていることの大部分は2.0でも当てはまります。
- 詳細についてはアップグレードガイドを参照
Composer 1.x から 2.x へアップグレード
$ composer self-update
# or
$ composer self-update --2
Composer 2.x から 1.x へダウングレード
$ composer self-update --1
Composer 1.x は長期間のサポートは行われないので、ダウングレードの際は注意してください。
下位互換性のないもの
プラグイン
- 各種プラグインがComposer2をサポートするまで待つ必要があります
補足: hirak/prestissimo プラグイン
hirak/prestissimo
プラグインはComposer1.xで多くの開発者がお世話になったComposer高速化プラグインです。
【業務連絡】2.0も正式に出ましたし、hirak/prestissimoはabandonしようと思います
— Hiraku (@Hiraku) October 28, 2020
プラグイン製作者のHiraku氏のツイートより、Composer1.x用で今後はメンテナンスされないとのことです。Composer2.xへアップグレードする際はプラグインを削除してからアップグレードしてください。
新しいプラットフォームチェック機能
- ComposerがランタイムPHPバージョンと利用可能な拡張機能をチェックする
- プロジェクトの依存関係と一致することを確認できる
- 不一致が見つかった場合、オートローダーはエラーの詳細とともに終了
-
composer check-platform-reqs --no-dev
をデプロイプロセスに組み込むことを推奨
リポジトリの優先度
- パッケージが優先度の高いリポジトリに存在する場合、優先度の低いリポジトリでは完全に無視する
- リポジトリの優先順位に関するドキュメント
無効なPSR-0 / PSR-4構成
- Composer 1.10で導入された警告に従って、無効なPSR-0 / PSR-4構成は、最適化オートローダーモードで自動ロードされなくなります
- Composer2へのアップグレードする前にこれらをクリーンアップする方が安全です
今後は?
Composer2.0はPHP5.3以上をサポートしていますが、コードの場所によってメンテナンスが非常に困難です。
将来のマイナーリリースでEOLPHPバージョンのサポートを終了する予定です。
タイムラインと最終的に含まれる機能によっては、Composer2.1でPHP5.3がサポートされる場合がありますが、遅くともComposer 2.2では、PHP7.1.3より古いすべてのサポートが終了します。
Composerの統計によると、Composerユーザーの90%以上が最新バージョンを使用でき、古いPHPバージョンの利用を続けるユーザーには、2.0.xまたは2.1.xの範囲で重大なバグとセキュリティ修正を提供し続けます。
Composer 1.xに関しては、多かれ少なかれEOLになりました。また、何か問題が発生した場合は重要な修正が行われますが、すべての人の目標は、できるだけ早く2.xに移行しましょう。