File kunci berisi hasil Resolusi ketergantungan Paket Manager untuk proyek. Manajer paket menggunakan file kunci untuk memberikan hasil deterministic ketika menyelesaikan paket grafik ketergantungan. Ketika Unity Package Manager menghitung resolusi yang sukses, menyimpan bahwa resolusi di dalam folder proyek Packages
dalam file JSON yang disebut packages-lock.json
. Setiap modifikasi pada project manifestSetiap proyek Unity memiliki manifestasi proyek, yang bertindak sebagai titik masuk untuk Manajer Paket. File ini harus tersedia di direktori <project>/Packages
. Manajer Paket menggunakannya untuk mengkonfigurasi banyak hal, termasuk daftar dependensi untuk proyek itu, serta repositori paket untuk permintaan. More info
Lihat di Glossary atau untuk manifestasi paket mutableAnda dapat mengubah isi paket mutable. Ini adalah kebalikan dari immutable. Hanya Local packages dan Embedded packages mutable.
Lihat di Glossary (baik embedded atau dipasang dari folder lokal) berpotensi memenuhi Manajer Paket untuk menghitung ulang versi paket yang diselesaikan. Tapi selama versi paket dalam file kunci memenuhi kisaran yang tersirat oleh versi ketergantungan dan strategi resolusi, paket tetap terkunci pada versi tersebut.
Misalnya, berikut adalah entri khas dalam file kunci:
"com.unity.textmeshpro": {
"version": "2.0.1",
"depth": 0,
"source": "registry",
"dependencies": {
"com.unity.ugui": "1.0.0"
},
"url": "https://packages.unity.com"
},
etc.
Ketika Manajer Paket menyelesaikan konflik ketergantungan tidak langsungKetergantungan indirect, atau transitif terjadi ketika proyek Anda meminta paket yang sendiri “tergantung pada” paket lain. Misalnya, jika proyek Anda tergantung pada paket alembic@1.0.7
yang pada gilirannya tergantung pada paket timeline@1.0.0
, maka proyek Anda memiliki ketergantungan langsung pada Alembic dan ketergantungan tidak langsung pada Timeline. More info
Lihat di Glossary, ia mencoba untuk menggunakan kembali sebanyak mungkin paket yang terkunci. Ini menjamin bahwa resolusi ketergantungan berikutnya menghasilkan hasil yang sama untuk set ketergantungan yang sama. Ini juga meminimalkan operasi memakan waktu seperti mengunduh, mengekstrak, atau menyalin paket.
Jika tidak ada solusi yang hanya termasuk paket yang terkunci, maka Manajer Paket memilih set paket dengan peningkatan yang paling berisiko, memilih peningkatan patch di atas peningkatan minor atau besar, dan peningkatan minor atas peningkatan utama. Bahkan, Anda dapat menyesuaikan tingkat risiko untuk meningkatkan. Untuk informasi lebih lanjut, lihat Mengkustomisasi strategi resolusi.
Untuk memaksa versi ketergantungan tidak langsung, hapus file kunci.
Jangan memodifikasi file kunci secara manual: Manajer Paket membuat dan mempertahankan file kunci, sehingga menulis setiap perubahan yang Anda buat ke file.
Masukkan file kunci di bawah kendali sumber sehingga Anda dapat secara konsisten mereproduksi set paket yang sama untuk memastikan proyek Anda tetap konsisten seiring waktu dan pada mesin yang berbeda.
Secara default, Manajer Paket membuat atau memperbarui file kunci ketika berhasil menghitung grafik ketergantungan. Jika Anda melihat hasil yang tidak terduga, Anda dapat mengatur properti enableLockFile ke false
dalam proyek Anda manifestasi untuk menonaktifkan penguncian. Namun, jika Anda menonaktifkan file kunci, paket Manager clones Git URL paket lagi, yang menyebabkan kinerja berkurang dan penggunaan jaringan tambahan. Ini mungkin juga menyebabkan hasil non-deterministik jika Anda mendorong lebih baru berkomitmen untuk repositori Git jarak jauh antara dua resolusi.