Tidak ada jawaban pasti untuk ini.
Secara umum, komposer tidak boleh melakukan apa yang seharusnya dilakukan oleh sistem build dan Anda tidak boleh memasukkan komposer. Buka di VCS. Komposer mungkin aneh memilikinya mundur. Pengguna akhir alih-alih hasil tidak boleh menggunakan file kunci. Biasanya sistem build Anda menyimpan snapshot, direktori yang dapat digunakan kembali, dll, bukannya direktori kosong setiap kali. Orang-orang checkout lib dari komposer mungkin ingin lib menggunakan kunci sehingga dependensi yang beban lib telah diuji terhadap.
Di sisi lain yang secara signifikan meningkatkan beban manajemen versi, di mana Anda hampir pasti menginginkan beberapa versi dari setiap perpustakaan karena dependensi akan dikunci dengan ketat. Jika setiap pustaka cenderung memiliki versi yang sedikit berbeda maka Anda memerlukan beberapa dukungan versi pustaka dan Anda juga dapat dengan cepat melihat ukuran dependensi yang diperlukan, maka disarankan untuk tetap menggunakannya.
Mengambil hal itu, saya benar-benar tidak menemukan file kunci berguna perpustakaan atau workdir Anda sendiri. Ini hanya digunakan untuk saya adalah di platform build / testing saya yang bertahan setiap aset yang diperoleh secara eksternal hanya memperbarui mereka ketika diminta, memberikan build berulang untuk pengujian, membangun dan menyebarkan. Sementara itu dapat disimpan dalam VCS tidak selalu disimpan dengan pohon sumber, pohon build akan berada di tempat lain dalam struktur VCS atau dikelola oleh sistem lain di tempat lain. Jika disimpan dalam VCS, masih dapat diperdebatkan apakah akan menyimpannya dalam repo yang sama dengan pohon sumber karena jika tidak setiap tarikan dapat membawa banyak aset bangunan. Saya sangat suka memiliki semuanya dalam repo yang diatur dengan baik kecuali produksi / kredensial sensitif dan mengasapi.
SVN dapat melakukannya lebih baik daripada git karena tidak memaksa Anda untuk memperoleh seluruh repo (meskipun saya menduga itu sebenarnya tidak benar-benar diperlukan untuk git, tetapi dukungan untuk itu terbatas dan itu tidak umum digunakan). Repo build sederhana biasanya hanya cabang overlay tempat Anda menggabungkan / mengekspor pohon build. Beberapa orang menggabungkan sumber daya luar dalam pohon sumber mereka atau memisahkan lebih jauh, eksternal, membangun dan sumber pohon. Biasanya melayani dua tujuan, membangun caching dan membangun berulang, tetapi kadang-kadang membuatnya terpisah pada setidaknya beberapa tingkat juga memungkinkan membangun segar / kosong dan beberapa membangun dengan mudah.
Ada sejumlah strategi untuk ini dan tidak ada satupun dari mereka yang bekerja dengan baik dengan tetap mempertahankan daftar sumber kecuali Anda menyimpan sumber eksternal di pohon sumber Anda.
Mereka juga memiliki hal-hal seperti hash dalam file, bagaimana menggabungkan ketika dua orang memperbarui paket? Itu saja seharusnya membuat Anda berpikir mungkin ini disalahartikan.
Argumen yang diajukan orang untuk file kunci adalah kasus di mana mereka telah mengambil pandangan yang sangat spesifik dan membatasi masalah. Ingin bangunan berulang dan bangunan konsisten? Sertakan folder vendor dalam VCS. Kemudian Anda juga mempercepat pengambilan aset serta tidak harus bergantung pada sumber daya eksternal yang berpotensi rusak selama pembangunan. Tak satu pun dari membangun dan menggunakan pipa yang saya buat memerlukan akses eksternal kecuali benar-benar diperlukan. Jika Anda harus memperbarui sumber daya eksternal itu sekali dan hanya sekali. Apa yang ingin dicapai oleh komposer masuk akal untuk sistem terdistribusi kecuali seperti yang disebutkan sebelumnya tidak masuk akal karena akan berakhir dengan neraka ketergantungan perpustakaan untuk pembaruan perpustakaan dengan bentrokan umum dan pembaruan selambat paket paling lambat untuk memperbarui.
Selain itu saya memperbarui dengan ganas. Setiap kali saya mengembangkan saya memperbarui dan menguji semuanya. Ada jendela yang sangat kecil untuk penyimpangan versi signifikan untuk menyelinap masuk. Realistis juga, ketika versi semantik ditegakkan, yang cenderung untuk komposer, Anda tidak seharusnya memiliki banyak masalah kompatibilitas atau kerusakan.
Di composer.json Anda meletakkan paket yang Anda butuhkan dan versinya. Anda dapat mengunci versi di sana. Namun paket-paket itu juga memiliki dependensi dengan versi dinamis yang tidak akan dikunci oleh composer.json (meskipun saya tidak melihat mengapa Anda tidak bisa juga meletakkannya di sana sendiri jika Anda ingin mereka dikunci versi) sehingga orang lain yang menjalankan komposer menginstal mendapat sesuatu yang berbeda tanpa kunci. Anda mungkin tidak peduli banyak tentang itu atau Anda mungkin peduli, itu tergantung. Haruskah kamu peduli? Mungkin setidaknya sedikit, cukup untuk memastikan Anda menyadarinya dalam situasi apa pun dan dampak potensial, tetapi mungkin tidak menjadi masalah baik jika Anda selalu punya waktu untuk KERING berjalan terlebih dahulu dan memperbaiki apa pun yang diperbarui.
Komposer kerumitan mencoba untuk menghindari kadang-kadang tidak ada dan kerumitan memiliki file kunci komposer dapat membuat signifikan. Mereka sama sekali tidak punya hak untuk memberi tahu pengguna apa yang harus atau tidak boleh mereka lakukan sehubungan dengan aset bangunan versus sumber (apakah akan bergabung terpisah di VCS) karena itu bukan urusan mereka, mereka bukan bos Anda atau saya. "Komposer berkata" bukan otoritas, mereka bukan atasan Anda dan mereka juga tidak memberikan keunggulan kepada siapa pun dalam hal ini. Hanya Anda yang tahu situasi Anda yang sebenarnya dan apa yang terbaik untuk itu. Namun, mereka mungkin menyarankan tindakan default untuk pengguna yang tidak mengerti bagaimana hal-hal bekerja dalam hal mana Anda mungkin ingin mengikuti itu tetapi secara pribadi saya tidak berpikir begitu ' pengganti nyata untuk mengetahui bagaimana hal-hal bekerja dan mampu dengan benar melatih kebutuhan Anda. Pada akhirnya, jawaban mereka untuk pertanyaan itu adalah tebakan terbaik. Orang-orang yang membuat komposer tidak tahu di mana Anda harus menyimpan komposer Anda. Satu-satunya tanggung jawab mereka adalah memberi tahu Anda apa itu dan apa fungsinya. Di luar itu Anda perlu memutuskan apa yang terbaik untuk Anda.
Menyimpan file kunci bermasalah bagi kegunaan karena komposer sangat tertutup tentang apakah menggunakan kunci atau JSON dan tidak selalu baik untuk menggunakan keduanya bersama-sama. Jika Anda menjalankan instal hanya menggunakan file kunci itu akan muncul jadi jika Anda menambahkan sesuatu ke composer.json maka itu tidak akan diinstal karena itu tidak ada dalam kunci Anda. Ini tidak intuitif sama sekali operasi apa yang benar-benar dilakukan dan apa yang mereka lakukan sehubungan dengan file json / kunci dan kadang-kadang tampaknya tidak masuk akal (bantuan mengatakan menginstal mengambil nama paket tetapi pada mencoba menggunakannya itu mengatakan tidak ).
Untuk memperbarui kunci atau pada dasarnya menerapkan perubahan dari json Anda harus menggunakan pembaruan dan Anda mungkin tidak ingin memperbarui semuanya. Kunci diutamakan untuk memilih apa yang harus dipasang. Jika ada file kunci, itu yang digunakan. Anda dapat membatasi pembaruan tetapi sistem masih berantakan.
Pembaruan memakan waktu, pertunjukan RAM. Saya curiga juga jika Anda mengambil sebuah proyek yang tidak tersentuh untuk sementara waktu yang terlihat dari versi yang sudah naik, yang akan ada lebih banyak dari waktu ke waktu dan mungkin tidak melakukan itu secara efisien yang hanya mencekiknya.
Mereka sangat licik ketika datang untuk memiliki perintah komposit rahasia yang Anda tidak bisa harapkan menjadi komposit. Secara default, perintah menghapus komposer muncul di peta untuk memperbarui komposer dan komposer menghapus misalnya.
Pertanyaan yang benar-benar perlu Anda tanyakan adalah bukan apakah Anda harus menyimpan kunci di pohon sumber Anda atau sebagai alternatif apakah Anda harus bertahan di suatu tempat dengan cara tertentu atau tidak, melainkan Anda harus bertanya apa yang sebenarnya dilakukannya, maka Anda dapat memutuskan sendiri ketika Anda perlu bertahan dan di mana.
Saya akan menunjukkan bahwa memiliki kemampuan untuk memiliki kunci adalah kenyamanan ketika Anda memiliki strategi ketekunan ketergantungan eksternal yang kuat karena melacak Anda informasi yang berguna untuk melacak itu (asal) dan memperbaruinya tetapi jika Anda tidak maka tidak ada di sini tidak di sana. Ini tidak berguna ketika dipaksa turun ke tenggorokan Anda sebagai opsi wajib untuk membuatnya mencemari pohon sumber Anda. Ini adalah hal yang sangat umum ditemukan dalam basis kode lama di mana orang telah membuat banyak perubahan pada komposer. Johnny yang belum benar-benar diterapkan dan rusak ketika orang mencoba menggunakan komposer. Tidak ada komposer. Kunci, tidak ada masalah desync.