1. ucan-lab

    Posted

    ucan-lab
Changes in title
+Composer2.x で変わったこと
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,120 @@
+2020年10月24日 Composr 2.0.0 がリリースされました🙌
+[半年前の記事](https://php.watch/articles/composer-2)から少し気になってましたが、思ったより早くリリースされて嬉しいです!
+
+- [Composer 2.0 is now available!](https://blog.packagist.com/composer-2-0-is-now-available)
+
+今回はこちらのリリース記事の内容を要約してご紹介します!
+
+## Composerとは?
+
+https://github.com/composer/composer
+
+Composerとは、PHPのパッケージ管理ツールです。
+`composer.json` に書かれたパッケージ及び依存関係にあるパッケージも含めコマンド一発でインストールしてくれます。
+
+Composerを使っていないPHPプロジェクトはほぼほぼないと言っても良いでしょう。
+そんな素敵なツールのメジャーバージョンアップニュースです。
+
+## 変更点
+
+記事の内容を要約してご紹介します。
+詳細な変更点については、[チェンジログ](https://github.com/composer/composer/releases/tag/2.0.0)をご覧ください。
+
+### パフォーマンスの向上
+
+- Composerとpackagist.orgの間で使用されるプロトコル及び依存関係の解決
+- curlと制約評価の最適化を使用してファイルを並行してダウンロード
+- 速度とメモリ使用量の両方の点で大幅な改善
+- 一部のプロジェクトで両方に対して50%を超える改善
+- require/remove および部分的な更新がはるかに高速
+ - Composerは変更されているパッケージのメタデータのみをロードするようになったため
+
+![](https://i.imgur.com/ITxURcs.png)
+
+初期更新+インストール(ブートストラップされたプロジェクト、空のキャッシュ)の時間は、ext-curlが有効になっているComposer 2で使用される時間が約60%少ないことを示しています。
+
+### ランタイム機能
+
+- 初期化時にプラットフォームチェックステップを追加
+- 新しく `Composer\InstalledVersions` クラスを追加
+- 詳細は[ランタイムドキュメント](https://getcomposer.org/doc/07-runtime.md)を参照
+
+ソースコードがランタイム機能のいずれかに依存する場合は、
+`"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でも当てはまります。
+- 詳細については[アップグレードガイド](https://github.com/composer/composer/blob/master/UPGRADE-2.0.md)を参照
+
+### 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をサポートするまで待つ必要があります
+
+### 新しいプラットフォームチェック機能
+
+- ComposerがランタイムPHPバージョンと利用可能な拡張機能をチェックする
+- プロジェクトの依存関係と一致することを確認できる
+- 不一致が見つかった場合、オートローダーはエラーの詳細とともに終了
+- `composer check-platform-reqs --no-dev` をデプロイプロセスに組み込むことを推奨
+
+### リポジトリの優先度
+
+- パッケージが優先度の高いリポジトリに存在する場合、優先度の低いリポジトリでは完全に無視する
+- [リポジトリの優先順位に関するドキュメント](https://getcomposer.org/doc/articles/repository-priorities.md)
+
+### 無効な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に移行しましょう。
+
+## 参考
+
+https://getcomposer.org/upgrade/UPGRADE-2.0.md
+https://blog.packagist.com/composer-2-0-is-now-available/
+https://php.watch/articles/composer-2