Package Manager ウィンドウで作業するとき、複数のソース (レジストリ、ローカル フォルダー、.tgz ファイル、Git URL) からパッケージをインストールすることができます。しかし、Package Manager は、これらのソースからパッケージをシームレスにインストールします。ただし、Package Manager は、これらのソースからパッケージをシームレスにインストールしますが、最初に一連の計算を行って、どのバージョンをインストールするか、また、それをサポートするのにインストールが必要な他のパッケージやバージョンを決定する必要があります。
Package Manager ウィンドウでインストールするパッケージのバージョンを選択すると、 依存関係 を プロジェクトマニフェスト に加えることになります。これは、プロジェクトを動かすために、特定のパッケージの特定のバージョンが必要であるという宣言です。プロジェクトマニフェスト に示される依存関係は、“直接” 依存関係と呼ばれます。
パッケージは、機能するために他のパッケージを必要とすることがあります。これは “間接的” または “推移的” な依存関係と呼ばれます。パッケージの開発者は、開発中にこれらの依存関係を パッケージマニフェスト に加えます。例えば、以下の図では、alembic@1.0.7
パッケージは、timeline@1.0.0
パッケージに依存しています。つまり、timeline パッケージは “間接的” 依存関係にあります。一方で、プロジェクトは、cinemachine@2.6.0
と alembic@1.0.7
に依存しています。つまり、これらは両方とも “直接的” 依存関係です。
パッケージのバージョンを依存関係として加える場合、そのバージョンは Package Manager がインストールするバージョンとは限りません。なぜならば、プロジェクトにあるすべての依存関係を、直接か間接かにかかわらず考慮しなければならないからです。どのパッケージをインストールするかを決定するために、Package Manager はすべての直接および間接的な依存関係のリストを作成します。
Package Manager は、一度に 1 つのバージョンのパッケージしかインストールできません。そのため、各パッケージのどのバージョンをインストールするかを決定するために、依存関係グラフ を構築する必要があります。Package Manager は、すべてのバージョンの競合の解決に成功すると、その解決を ロックファイル に保存し、決定性を確保し (毎回同じパッケージが確実にインストールされます)、依存関係グラフの再計算にかかる時間とリソースを減らすことができます。