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