ฉันเห็นคำถามสองข้อนี้แยกกันในข้อเดียว ให้ฉันตอบทั้งคู่
คุณควรคอมมิทไฟล์เป็น repo หรือไม่?
ใช่. ดังที่ได้กล่าวไว้ในคำตอบของ ckuijjerขอแนะนำในMigration Guideเพื่อรวมไฟล์นี้ไว้ใน repo อ่านเพื่อทำความเข้าใจว่าทำไมคุณต้องทำ
คือyarn.lockอะไร
เป็นไฟล์ที่เก็บเวอร์ชันอ้างอิงที่แน่นอนสำหรับโครงการของคุณพร้อมกับ checksums สำหรับแต่ละแพ็คเกจ นี่เป็นวิธีเส้นด้ายที่จะให้ความสอดคล้องสำหรับการอ้างอิงของคุณ
จะเข้าใจว่าทำไมไฟล์นี้เป็นสิ่งจำเป็นที่คุณต้องเข้าใจสิ่งที่เป็นปัญหาที่อยู่เบื้องหลังเดิม package.jsonNPM เมื่อคุณติดตั้งแพคเกจ NPM จะเก็บช่วงของการแก้ไขที่อนุญาตของการอ้างอิงแทนการแก้ไขเฉพาะ (semver) NPM จะพยายามดึงข้อมูลการอ้างอิงรุ่นล่าสุดของการพึ่งพาภายในช่วงที่ระบุ (เช่นการอัปเดตแพตช์ไม่ทำลาย) มีสองปัญหาเกี่ยวกับวิธีการนี้
ผู้เขียนที่พึ่งพาอาจปล่อยการอัปเดตเวอร์ชันของแพทช์ในขณะที่ในความเป็นจริงการแนะนำการเปลี่ยนแปลงที่มีผลต่อโครงการ
นักพัฒนาสองคนที่ทำงานnpm installในเวลาต่างกันอาจได้รับชุดของการอ้างอิงที่แตกต่าง ซึ่งอาจทำให้เกิดข้อผิดพลาดที่ไม่สามารถทำซ้ำได้ในสองสภาพแวดล้อมเดียวกัน สิ่งนี้จะทำให้เกิดปัญหาด้านความมั่นคงสำหรับเซิร์ฟเวอร์ CI
เส้นด้ายในอีกทางหนึ่งใช้เส้นทางของการคาดการณ์ได้สูงสุด มันสร้างyarn.lockไฟล์เพื่อบันทึกเวอร์ชันการพึ่งพาที่แน่นอน มีแฟ้มที่ในเส้นด้ายที่จะใช้รุ่นที่เก็บไว้ในแทนการแก้ไขปัญหาจากรุ่นyarn.lock package.jsonกลยุทธ์นี้รับประกันว่าไม่มีปัญหาที่อธิบายไว้ข้างต้นเกิดขึ้น
yarn.lockคล้ายกับnpm-shrinkwrap.jsonที่สามารถสร้างโดยnpm shrinkwrapคำสั่ง ตรวจสอบคำตอบนี้เพื่ออธิบายความแตกต่างระหว่างสองไฟล์นี้