たきゃはしです

もう日常ブログにしよう

Composer 2: What's new and changed 個人的翻訳まとめ

php.watch

新しくなった 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.