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