เลขเวอร์ชันแบบ Semantic Versioning (SemVer) อย่างเช่น 16.10.2 พอเข้าใจได้ว่าเป็นเวอร์ชัน 16 แต่ว่าสองตัวหลังละหมายถึงอะไร?
การออกเวอร์ชันในแบบนี้จะแบ่งเป็น 3 ส่วนตามท ี่คุ้นเคยในรูปแบบ:
เมเจอร์ . ไมเนอร์ . แพทช์
โดยจะ +1 ในแต่ละตำแหน่งตามขนาดการเปลี่ยนแปลงที่เกิดขึ้น
- เมเจอร์ (Major): การเปลี่ยนแปลงครั้งใหญ่ใช้กับเวอร์ชันก่อนหน้าไม่ได้
- ไมเนอร์ (Minor): ฟีเจอร์หรือฟังก์ชันใหม่ใช้กับเวอร์ชันก่อนหน้าได้
- แพทช์ (Patch): การแก้บัคต่าง ๆ หรือการแก้ไขเล็กน้อย
เวอร์ชันจะเริ่มที่ 1.0.0
เสมอ ยกเว้นตอนเริ่มพัฒนาเบื้องต้นจะเริ่มต้นที่ 0.x.x
ได้ ซึ่งเป็นการบอกว่าฟังก์ชัน/การทำงานสามารถเปลี่ยนแปลงได้ตลอดเวลา
นอกจากนี้ยังสามารถระบุต่อท้ายอีกต่อเพื่อบอกว่าเป็น Pre-release ได้ เช่น 4.2.0-alpha
, 0.6.9-rc
, 18.2.0-next
การตั้งตัวเลขที่เป็นระบบแบบนี้จะช่วยแก้ปัญหา Dependency Hell ได้ ที่หลายแพคเกจต้องการใช้แพคเกจตัวเดียวกันแต่ต่างเวอร์ชันกัน การระบุอย่างเป็นระบบจะช่วยให้รู้ได้ว่าเวอร์ชันไหนเข้ากันได้บ้าง และใช้งานร่วมกันได้
ในมุมมองของผู้ที่ใช้แพคเกจของผู้อื่นสามารถใช้ตัดสินใจได้ว่าจะอัพเดทดีไหม เช่น แค่แพทช์กดอัพได้เลย ไมเนอร์อาจต้องคิดนิดนึง ส่วนเมเจอร์ต้องดูให้ละเอียดเผื่อต้องมีการแก้โค้ดตามด้วย
จะเห็นได้ว่าการตั้งอย่างเป็นระบบเป็นประโยชน์ทั้งคนพัฒนาและคนใช้ ไม่ต้องกังวลว่าเวอร์ชันจะตีกัน หรือว่าต้องมาเสี่ย งโชคว่าอัพเดตแล้วจะทำของเราพังอีกต่อไป
อ้างอิง
เนื้อหานี้ถูกเผยแพร่ครั้งแรกในรูปแบบของโพสท์ Facebook เพื่อให้ง่ายต่อการสืบค้นจึงนำมาจัดเก็บในรูปแบบบทความด้วย