ฉันต้องการทั้ง package-lock.json และ package.json หรือไม่


149

หลังจากอัปเดต NPM ของฉันเป็นเวอร์ชันล่าสุด (จาก 3.X เป็น 5.2.0) และทำงานnpm installในโครงการที่มีอยู่ฉันได้รับpackage-lock.jsonไฟล์ที่สร้างขึ้นโดยอัตโนมัติ

ผมสามารถบอกให้ฉันแผนภูมิการอ้างอิงที่แน่นอนเมื่อเทียบกับpackage-lock.jsonpackage.json

จากข้อมูลเพียงอย่างเดียวดูเหมือนว่าpackage.jsonซ้ำซ้อนและไม่ต้องการอีกต่อไป

พวกเขาทั้งสองจำเป็นสำหรับ NPM ในการทำงานหรือไม่
จะปลอดภัยหรือเป็นไปได้ที่จะใช้package-lock.jsonไฟล์เท่านั้น?

เอกสารบน package-lock.json ( doc1 , doc2 ) ไม่ได้พูดถึงสิ่งใด

แก้ไข :

หลังจากคิดเพิ่มเติมเกี่ยวกับเรื่องนี้ฉันมาสรุปว่าถ้ามีคนต้องการใช้โครงการของคุณกับ NPM เวอร์ชันเก่า (ก่อน 5.x) มันจะยังคงติดตั้งการพึ่งพาทั้งหมด แต่มีเวอร์ชันที่ถูกต้องน้อยกว่า (เวอร์ชันแพตช์)


คำตอบ:


103

คุณต้องการทั้งpackage-lock.jsonและpackage.json? ไม่

คุณต้องการpackage.json?ใช่แล้ว

คุณสามารถมีโครงการที่มีเพียงpackage-lock.json? ไม่ไม่

package.jsonจะใช้สำหรับการอ้างอิงมากกว่าชอบ - การกำหนดคุณสมบัติของโครงการ, คำอธิบาย, ผู้เขียนและใบอนุญาตข้อมูลสคริปต์ ฯลฯpackage-lock.jsonถูกนำมาใช้เพียงเพื่อการอ้างอิงล็อคหมายเลขรุ่นที่เฉพาะเจาะจง


19

package-lock.json: บันทึกเวอร์ชันที่แน่นอนของแต่ละแพ็คเกจที่ติดตั้งซึ่งอนุญาตให้คุณติดตั้งใหม่ได้ การติดตั้งในอนาคตจะสามารถสร้างแผนภูมิการพึ่งพาที่เหมือนกัน

package.json: บันทึกเวอร์ชันขั้นต่ำที่คุณต้องการ หากคุณอัปเดตเวอร์ชันของแพ็คเกจเฉพาะการเปลี่ยนแปลงจะไม่ปรากฏที่นี่


1
หากข้างต้นเป็นจริงและpackage.jsonบันทึกเวอร์ชันต่ำสุดที่แอพและ package-lock.json บันทึกนั้นเป็นเวอร์ชั่นที่แน่นอนของแต่ละแพ็คเกจที่ติดตั้งแล้วฉันมีสถานการณ์แปลก ๆ ที่โมดูลถูกตั้งค่าเป็นเวอร์ชั่น 0.112.1 ในแพ็คเกจ .json และ 0.110.0 ใน package-lock.json ...
Jean-François Beauchamp

6

หากคำถามของคุณคือถ้าไฟล์ล็อคควรมุ่งมั่นที่จะควบคุมแหล่งที่มาของคุณ - มันควร มันจะถูกเพิกเฉยภายใต้สถานการณ์บางอย่าง

ฉันพบว่ามันทำให้เกิดการดึงคำขอและส่งประวัติดังนั้นหากคุณเห็นว่ามันเปลี่ยนแปลง


1
ไม่ฉันไม่ได้ถามถึงความมุ่งมั่นในการควบคุมแหล่งที่มา เพียงแค่ถ้า NPM ความต้องการทั้งของพวกเขาในเวลาเดียวกันกับการทำงาน package-lock.jsonดูเหมือนว่าเป็นรุ่นที่ละเอียดมากขึ้นpackage.jsonดังนั้นจึงปลอดภัยหรือเป็นไปได้ที่จะใช้ไฟล์ล็อคเท่านั้น
Omri Luzon

ฉันเห็นว่าฉันออกจาก package.json ในโครงการของฉันส่วนใหญ่จะมีที่สำหรับสคริปต์ npm
Stanley Kirdey

1
ขณะนี้มีคำถามแยกต่างหากว่าจะpackage-lock.jsonควบคุมภายใต้เวอร์ชันหรือไม่
Adrian W

0

คำอธิบายที่ถูกต้องและมีรายละเอียดมากขึ้นเกี่ยวกับเหตุผลที่ทำให้การรักษา package-lock.json อยู่ที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.