Skip to main content

อ่านเลขเวอร์ชันแบบ Semantic Versioning อย่างไร?

เลขเวอร์ชันแบบ 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 เพื่อให้ง่ายต่อการสืบค้นจึงนำมาจัดเก็บในรูปแบบบทความด้วย