ロックファイルには、Package Manager の 依存関係の解決 の結果が含まれています。Package Manager は、パッケージの依存関係グラフ を解決するときに、ロックファイルを使って 決定論的な 結果を導き出します。Unity Package Manager が正しい解決を計算するとき。その解決は、プロジェクトの Packages
フォルダー内の packages-lock.json
という JSON ファイルに保存されます。プロジェクトのマニフェストまたは変更可能なパッケージのマニフェスト(埋め込み または ローカルフォルダからインストール のいずれか) への変更は、Package Manager に解決されたパッケージバージョンの再計算を強いる可能性があります。しかし、ロックファイル内のパッケージのバージョンが、依存関係のバージョンと 解決策 で暗示される範囲を満たす限り、パッケージはそのバージョンでロックされたままになります。
例えば、ロックファイルの典型的なエントリは次のとおりです。
"com.unity.textmeshpro": {
"version": "2.0.1",
"depth": 0,
"source": "registry",
"dependencies": {
"com.unity.ugui": "2.0.0"
},
"url": "https://packages.unity.com"
},
etc.
Package Manager が競合する 間接的な依存関係 を解決するとき、ロックされたパッケージを可能な限り再利用しようとします。これにより、後続の依存関係の解決が、同じ一揃いの依存関係に対して同じ結果をもたらすことが保証されます。また、パッケージのダウンロード、抽出、コピーなど、時間のかかる操作を最低減に抑えることができます。
ロックされたパッケージだけを含む解決がない場合、Package Manager は最もリスクの少ないアップグレードを行うパッケージのまとまりを選択します。マイナーまたはメジャーアップグレードよりもパッチアップグレードを、メジャーアップグレードよりもマイナーアップグレードを優先します。実際には、アップグレードのリスクレベルをカスタマイズすることができます。詳しくは、解決策のカスタマイズ を参照してください。
間接的な依存関係のバージョンを強制的に更新するには、ロックファイルを削除します。
ロックファイルを手動で変更しないでください。Package Manager はロックファイルを作成し、維持します。そのため、手動で加えた変更は Package Manager によって上書きされてしまいます。
ロックファイルをソース管理下に置きます。すると、同じ一揃いのパッケージを一貫して再現でき、経時的に、異なるマシンでも、プロジェクトの一貫性を保つことができます。
デフォルトでは、Package Manager は、依存関係図の計算に成功すると、ロックファイルを作成または更新します。予期しない結果が出た場合は、プロジェクトマニフェストの enableLockFile プロパティを false
に設定してロックを使用不可にできます。ただし、ロックファイルを不可にすると、Package Manager は Git URL パッケージを再度クローンするため、パフォーマンスが低下したり、ネットワーク使用量が増えたりします。また、2 つの解決の間に新しいコミットをリモート Git リポジトリにプッシュすると、非決定的な結果になる可能性があります。