Composer は同じパッケージの複数のバージョンをどのように処理しますか? 質問する

Composer は同じパッケージの複数のバージョンをどのように処理しますか? 質問する

これは以前どこかで質問されたことがあるかもしれませんが (あるはずでした)、答えが見つからないようです。誰かがリンクを提供してくれたら、この投稿を削除できます!:

Composer の機能 (おそらく他のパッケージ マネージャーにも適用されます) のいくつかを理解しようとしています。

基本的に、私は次のシナリオで composer が何を行うかを知りたいだけです。

1.

私のメインプロジェクトには依存関係があります:

"guzzlehttp/guzzle": "5.0.*",

私の外部バンドルは依存関係があります

"guzzlehttp/guzzle": "5.0.*",

composer は、一度だけ必要だとわかっているので、guzzlehttp/guzzle を一度インストールしますか?

2. 同じシナリオですが、将来誰かがメイン プロジェクトを更新して以下を使用する場合:

"guzzlehttp/guzzle": "6.0.*",

Composer は、guzzle の 2 つのバージョン (5 と 6) をインストールするのでしょうか (これが正しい動作だと思います)、それとも最も高いバージョン (つまり 6) を使用するのでしょうか? また、バージョンが 2 つある場合、名前空間が同じになる可能性があるため、競合が発生しますか?

ありがとう

ベストアンサー1

質問1

はい、Composer は各拡張機能/パッケージの 1 つのバージョンのみをインストールできます。

質問2へ

回答 1 のため: Composer はメイン プロジェクトと外部パッケージを互換性がないものと見なします。

この場合は

  • メインプロジェクトでもバージョン 5 を使い続けてください。
  • 互換性がある場合は、外部パッケージ所有者にもバージョン 6 へのアップグレードを依頼してください。
  • 外部パッケージをフォークして、自分でバージョン6と互換性を持たせる

おすすめ記事