新しくなった Composer v2 の What's new and changed ということで、その内容を確認したついでに要点をまとめました。雑ですが
- Composer2 は既存のワークフローとほぼ互換性がある。
- composer self-update --snapshot で Composer v2 を試せる
- 動かないプラグインがあったら --no-plugins で一時的に無効にできる
- パッケージとメタデータを並行してダウンロードすることでパッケージのダウンロード時間を大幅に短縮した
- キャッシュがない初回ダウンロードは倍以上の数値を出す(larave/laravelで計測)
- HTTP2を利用することで効率よくダウンロードを行う
- v1ではhirak/prestissimoがこれらの機能を担っていました(@Hirakuさん感謝!!
- 部分的なオフライン対応
- composer.lockがあり環境変数COMPOSER_DISABLE_NETWORKが1であれば動作する
- 一部のパッケージのみ停止するのではなく完全に無効
- コマンド require と remove の dry-run 対応
- rootとして実行するには確認が必要
- plugin と script は任意のコマンドを実行できるためrootで実行するのは良いことではない
- v1では警告だったが、v2からはインタラクティブな確認となる(Y/N 的な
- ただし -n でオプションで確認されなくなる
- 新しいリポジトリメタデータフォーマット
- 従来に比べて軽量な形式となった
- キャッシュ可能なエンドポイントをmetadata-urlにて提供する
- Packagist.orgはすでにこの形式をサポートしている
- 複数リポジトリに対してのCanonical、フィルタリング、allow-only support
- 非正規リポジトリの優先度の設定
- onlyとexcludeを用いてリポジトリ内のディレクトリのフィルタリング
- --no-suggest オプションは削除された(使ったことない
- Lock、ダウンロード、インストールのワークフロー改善
- インストールおよび更新が完了するまでロックすることでネットワーク障害などによるvendor-dirの破損を防ぐ
- vendor/composer/installed.jsonはpackagesプロパティを使用するようになった(理解できてない
- composer-plugin-api が2.0になります
- すみません、プラグインやってないのここは飛ばしました
- Try Composer v2 today!
- Composerバージョン2やっちゃおうぜ!
バグや提案があればcreate an Issues · composer/composer · GitHub or a Pull Requests · composer/composer · GitHub.