Package Manager ウィンドウで作業する際は、複数のソース (レジストリ、ローカル フォルダー または Tarball、Git URL、および 名前) からパッケージをインストールできます。Package Manager はこれらのソースからのパッケージをシームレスにインストールしますが、最初に一連の計算を行い、インストールするバージョンを決定する必要があります。また、選択したパッケージをサポートするためにインストールが必要な他のパッケージとバージョンを決定する必要があります。
直接依存関係
Package Manager ウィンドウでインストールするパッケージのバージョンを選択すると、“依存関係” を プロジェクトマニフェスト に追加することになります。これは、プロジェクトを動かすために、特定のパッケージの特定のバージョンが必要であるという宣言です。プロジェクトに依存関係を追加するには、package-name@package-version の形式で <project-root>/Packages/manifest.json ファイルの dependencies プロパティにパッケージとバージョンの参照を追加します。プロジェクトが直接パッケージに依存することから、これらは “直接” 依存関係と呼ばれます。
間接依存関係
パッケージが動作するために他のパッケージを必要とする場合もあります。これらは “間接” (または推移的) 依存関係と呼ばれます。パッケージ開発者は、開発時にこれらをパッケージマニフェストファイル (<package-root>/package.json) の dependencies プロパティに追加します。例えば、次の図では、alembic@1.0.7 パッケージは timeline@1.0.0 パッケージに依存関係があるため、Timeline パッケージは “間接” 依存関係です。逆に、プロジェクトには cinemachine@2.6.0 パッケージと alembic@1.0.7 パッケージとの依存関係があるため、これらは両方とも “直接” 依存関係です。
バージョンのオーバーライド
パッケージのバージョンを依存関係として追加する場合、そのバージョンが Package Manager によってインストールされるバージョンとは限りません。この理由は、Package Manager がプロジェクト内のすべての (直接または間接) 依存関係を考慮する必要があるためです。以下の例では、リクエストされた XR Plugin Management パッケージのバージョンは 4.0.3 です。ただし、Package Manager はバージョン 4.0.6 をインストールしました。これは、情報メッセージ (B) に示されているように、別のパッケージがより新しいバージョンに依存しているためです。
依存関係グラフ
Package Manager は一度に 1 つのパッケージバージョンしかインストールできないため、依存関係グラフ を作成する必要があります。このグラフは、プロジェクトの直接依存関係と間接依存関係のリストです。依存関係グラフによって、インストールする各パッケージのバージョンが決まります。
ロックファイル
Package Manager は、すべてのバージョンの競合を解決するときに、以下の 2 つの論理に基づく解決策を ロックファイル に保存します。