Semantic Versioning

مقدمه‌ای سریع بر نسخه‌بندی معنایی چیه و چرا ازش استفاده می‌کنیم.


ما موقع ریلیز کردن یا زدن hotfix، از یه ساختار مشخص برای نسخه‌ها استفاده می‌کنیم. مثلا 1.0.0 یا 1.0.1. این ساختار بر پایه یه روش استاندارد به اسم Semantic Versioning یا همون نسخه‌بندی معنایی ساخته شده.

اما این اعداد دقیقاً چی می‌گن؟ چرا ازشون استفاده می‌کنیم؟

این عددها نشون می‌دن که نسخه فعلی محصول ما چیه و چه تغییری توش اتفاق افتاده. وقتی از نسخه‌بندی معنایی استفاده می‌کنیم، بقیه توسعه‌دهنده‌ها راحت‌تر می‌فهمن که با آپدیت کردن برنامه قراره چیزی خراب بشه یا نه. این ساختار یه جورایی می‌گه که چه نوع تغییری انجام شده.

درک نسخه‌بندی معنایی

فرمت کلی نسخه‌بندی به صورت MAJOR.MINOR.PATCH هست. یعنی سه‌تا عدد که با نقطه جدا شدن. هر کدوم معنی خاص خودش رو داره.

نسخه Patch

این عدد سمت راستی هست. وقتی فقط یه باگ رو فیکس کردی، بدون اینکه تغییری توی قابلیت‌ها یا ساختار اصلی برنامه بدی، این عدد یکی میره بالا. مثلا از 1.0.0 می‌رسیم به 1.0.1.
تغییرات Patch کم‌ریسک‌ترین نوع تغییرات هستن و کلاً خیال آدم راحته که چیزی نمی‌ترکه 😄

نسخه Minor

عدد وسطیه. وقتی یه قابلیت جدید به پروژه اضافه می‌کنی ولی تغییری که دادی باعث نمی‌شه چیزی بترکه، باید نسخه‌ Minor رو افزایش بدی.
مثلاً از 1.0.1 میره به 1.1.0. نکته مهمه اینه وقتی نسخه‌ Minor رو میبری بالا، Patch باید برگرده به ۰.

نسخه Major

عدد سمت چپیه و اصلی ترین تغییره! وقتی یه تغییری توی برنامه میدی که نسخه قبلی باهاش سازگار نیست، یعنی یه چیز مهم یا ساختاری عوض شده، باید نسخه Major رو افزایش بدی.
مثلاً از 1.2.3 میره به 2.0.0. و البته تو این حالت هم Minor و Patch میشن صفر.

نسخه Pre-release

اگه بخوای نسخه آزمایشی منتشر کنی (مثل alpha یا beta)، می‌تونی یه خط تیره بذاری و اسم نسخه رو بنویسی، مثلا:

1.0.0-alpha 1.0.0-beta 1.2.0-alpha1

اسمش کاملاً دست خودته. مرسومه که از alpha, beta, یا rc استفاده کنن، ولی اجباری نیست. می‌تونی از هر اسمی که بخوای استفاده کنی.

شروع یه پروژه

خیلی‌ها پروژه‌ها شونو با نسخه 0.1.0 شروع می‌کنن. وقتی پروژه آماده شد برای انتشار رسمی، نسخه‌ رو میزارن 1.0.0.


با همین فرمت ساده و قابل فهم، می‌تونی پروژه‌تو خیلی مرتب و حرفه‌ای جلو ببری و بقیه هم راحت‌تر بفهمن چه خبره. همین 😎