1. ucan-lab

    No comment

    ucan-lab
Changes in body
Source | HTML | Preview
@@ -1,132 +1,132 @@
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をサポートするまで待つ必要があります
#### 補足: hirak/prestissimo プラグイン
- https://github.com/hirak/prestissimo
- [composerを速くするプラグイン・prestissimoを作った](http://blog.tojiru.net/article/432944706.html)
`hirak/prestissimo` プラグインはComposer1.xで多くの開発者がお世話になったComposer高速化プラグインです。
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">【業務連絡】2.0も正式に出ましたし、hirak/prestissimoはabandonしようと思います</p>&mdash; Hiraku (@Hiraku) <a href="https://twitter.com/Hiraku/status/1321327232384561153?ref_src=twsrc%5Etfw">October 28, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
-製作者の[Hiraku](https://twitter.com/Hiraku)氏もおっしゃる通り、Composer1.x用で今後はメンテナンスされないとのことです。Composer2.xへアップグレードする際はプラグインを削除してからアップグレードしてください。
+プラグイン製作者の[Hiraku](https://twitter.com/Hiraku)氏のツイートより、Composer1.x用で今後はメンテナンスされないとのことです。Composer2.xへアップグレードする際はプラグインを削除してからアップグレードしてください。
### 新しいプラットフォームチェック機能
- 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://github.com/composer/composer
- https://getcomposer.org/upgrade/UPGRADE-2.0.md
- https://blog.packagist.com/composer-2-0-is-now-available/
- https://php.watch/articles/composer-2