(jp) =
私の同僚の Sebastian が、メジャー バージョンの変更は破壊的な変更ではないことについて書いたとき、私は心から同意します。
私はもうできません。 少なくとも、composer が今日どのように機能するかではありません。

昨日、重大な変更に遭遇しました。 それでも、メジャー バージョン アップグレードは行っていません。 幸いなことに、私の別の同僚である Ruben が、本番環境にプッシュする前にこの問題を発見しました。
これが何が起こったのかです。
私たちのプロジェクトの 1 つが 2 周年を迎えようとしています。そのため、かなりの数のバージョン バンプが発生していると言えます。 2 年間の開発の後、使用したパッケージは次のとおりです。
"laravel/framework": "^6.5",
"league/commonmark": "^0.17.5",
"spatie/laravel-view-components": "^1.2",
初めに、 laravel/framework:^6.5. 通常、Laravel の次のメジャー バージョンに更新するまでに 1 ~ 2 か月かかります。 今日の時点で、問題を修正するために必要だった 7 を実行しています。
次は league/commonmark:^0.17.5; 2018 年 5 月に追加された非常に具体的な依存関係。当時、この特定の依存関係が必要でした。変更ログによると、 Fixed incorrect version constant value (again). このバージョンを使用しないと、他のパッケージと競合する可能性があります。
2年が経ち、 league/commonmark それ以来、最初の安定版リリースにタグを付けました。 これは彼らがもっと早くやるべきだったことですが、それは別の日のトピックです.
最後に spatie/laravel-view-components:^1.2. バージョン 7 の Laravel のブレード コンポーネントを優先して、最近アーカイブされたパッケージ。 将来のある時点で削除する可能性がありますが、これにはもちろん時間がかかり、クライアントに費用がかかります。 それは私たちが「ただできる」ことではありません。
準備が整い次第、問題を調査します。 昨日、私たちは composer update、そして物事が壊れました。
より具体的には、 spatie/laravel-view-components パッケージは単に機能しなくなりました。 ビュー コンポーネントをレンダリングする代わりに、render タグのみを表示しました。 バージョンの時点で既知の問題であることが判明しました 1.3.0、および固定 1.3.1. この修正は、悲惨な状況を実行したときにすでに存在していました composer update、それでも私たちはそれを受け取りませんでした。 私たちの spatie/laravel-view-components ロックオンされたようだった 1.3.0に更新したくなかった 1.3.1.
そんな窮地に陥ったときはいつでも、慌てず落ち着いてください。composer が助けてくれます。 単に使用する composer why-not spatie/laravel-view-components:1.3.1 何が問題なのかを正確に教えてくれます。
であることが判明した spatie/laravel-view-components:1.3.1、 これは laravel/framework 依存バージョンはからバンプされました ^6.0 に ^6.18.
それ自体は問題にならないはずです。 laravel/framework:^6.5 私たちのプロジェクトでは、ロードできるはずです ^6.18 大丈夫です。
残念ながら、それは起こりませんでした。 分かりますか、 laravel/framework への依存関係を追加しました league/commonmark:^1.1 バージョンで 6.10. 実際には、この追加は、依存関係のメジャー バージョンを更新するのと同じ効果があります。 ^1.1.
繰り返しますが、その変更自体は重大な変更ではありませんが、 やりました 防ぐ laravel/framework 私たちのプロジェクトでは、より高く更新することから 6.9、私たちの要件のため league/commonmark:^0.17.5. それが逆に防げた spatie/laravel-view-components からの更新 1.3.0 に 1.3.1、非常に必要なバグ修正が含まれていました。
それで、誰のせいですか? 最初に自分自身に指を向けましょう。更新する必要がありました league/commonmark より早く。 次のように、バグ修正と依存関係のバージョン バンプを組み合わせることもできます。 spatie/laravel-view-components でした 1.3.1、避けるべきです。 しかし、修正を機能させるためにバージョンアップが必要な場合、できることはほとんどありません。
あなたはそれを言うことができます laravel/framework その (暗黙の) 依存関係の 1 つを更新するべきではありませんでしたが、更新によってセキュリティの問題が修正された場合は特に、これを行うのは完全に正常なことです。
ちなみに、解決策は更新で構成されていました laravel/framework に ^7.0 —とにかく遅かれ早かれこれをしなければなりませんでした—そして league/commonmark 依存。 したがって、オープン ソース ベンダーがこの変更を避けるべきではないと思います。 オープン ソース コードは、定期的な更新に向けて私たちを後押しする必要があります。
しかし、本当の問題は、作曲家が私たちにそれを通知しなかったことです laravel/framework それ以上更新できませんでした 6.9 根底にある対立のため。 各依存関係を慎重に管理していないと、古い依存関係に行き詰まる危険があり、多くの必要なバグ修正がインストールされない可能性があります。
私の知る限り、渡すことができるオプションはありません composer update このような状況について通知することができ、将来的には良い追加になると思います.
私の同僚の Freek は、まさにこれを行う外部ライブラリがあることを指摘しました: https://github.com/Soullivaneuh/composer-versions-check. この機能が作曲家に組み込まれているとよいでしょう。
//platform.twitter.com/widgets.js