Saya melihat ini adalah dua pertanyaan terpisah dalam satu. Biarkan saya jawab keduanya.
Haruskah Anda mengkomit file ke dalam repo?
Iya. Seperti disebutkan dalam jawaban ckuijjer, disarankan dalam Panduan Migrasi untuk memasukkan file ini ke dalam repo. Baca terus untuk memahami mengapa Anda perlu melakukannya.
Apa yarn.lock
?
Ini adalah file yang menyimpan versi ketergantungan yang tepat untuk proyek Anda bersama dengan checksum untuk setiap paket. Ini adalah cara benang untuk memberikan konsistensi bagi dependensi Anda.
Untuk memahami mengapa file ini diperlukan, Anda harus terlebih dahulu memahami apa masalah di balik NPM asli package.json
. Saat Anda menginstal paket, NPM akan menyimpan berbagai revisi dari dependensi alih-alih revisi tertentu (semver). NPM akan mencoba mengambil pembaruan dependensi versi terbaru dari dependensi dalam rentang yang ditentukan (yaitu pembaruan patch yang tidak putus). Ada dua masalah dengan pendekatan ini.
Penulis ketergantungan mungkin merilis pembaruan versi tambalan sementara pada kenyataannya memperkenalkan perubahan besar yang akan memengaruhi proyek Anda.
Dua pengembang berjalan npm install
pada waktu yang berbeda dapat memperoleh rangkaian dependensi yang berbeda. Yang dapat menyebabkan bug tidak dapat direproduksi pada dua lingkungan yang persis sama. Ini akan menyebabkan masalah stabilitas bangunan untuk server CI misalnya.
Benang di sisi lain mengambil rute prediktabilitas maksimum. Itu menciptakan yarn.lock
file untuk menyimpan versi ketergantungan yang tepat . Setelah file itu di tempat, benang akan menggunakan versi yang disimpan yarn.lock
alih-alih menyelesaikan versi dari package.json
. Strategi ini menjamin bahwa tidak ada masalah yang dijelaskan di atas terjadi.
yarn.lock
mirip dengan npm-shrinkwrap.json
yang bisa dibuat dengan npm shrinkwrap
perintah. Periksa jawaban ini menjelaskan perbedaan antara dua file ini.