پرش به محتوای اصلی
بازگشت به صفحه اصلی

۲ دقیقه مطالعه

نسخه‌بندی معنایی (Semantic Versioning)

مروری سریع بر نسخه‌بندی معنایی و دلیل استفاده از آن در پروژه‌های نرم‌افزاری.

هنگام انتشار یک نسخه جدید یا ارائه یک hotfix، به ساختاری مشخص برای شماره‌گذاری نسخه‌ها نیاز داریم؛ برای مثال 1.0.0 یا 1.0.1. این ساختار استاندارد، Semantic Versioning یا به‌اختصار SemVer نام دارد.

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

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

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

نسخه Patch

عدد سمت راست، بخش PATCH است. زمانی آن را افزایش می‌دهیم که فقط یک باگ را برطرف کرده باشیم و تغییری در قابلیت‌ها یا ساختار اصلی برنامه ایجاد نشده باشد. برای مثال، نسخه 1.0.0 به 1.0.1 تبدیل می‌شود.

تغییرات PATCH معمولاً کم‌ریسک‌ترین نوع تغییرات هستند و نباید رفتار موجود برنامه را تغییر دهند.

نسخه Minor

عدد میانی، بخش MINOR است. زمانی آن را افزایش می‌دهیم که قابلیت جدیدی اضافه شده باشد، اما سازگاری با نسخه‌های قبلی حفظ شود. برای مثال، نسخه 1.0.1 به 1.1.0 تبدیل می‌شود.

هنگام افزایش MINOR، مقدار PATCH به صفر برمی‌گردد.

نسخه Major

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

در این حالت، مقدارهای MINOR و PATCH نیز به صفر برمی‌گردند.

نسخه Pre-release

برای انتشار نسخه آزمایشی می‌توانیم بعد از شماره نسخه یک خط تیره و شناسه نسخه را اضافه کنیم:

1.0.0-alpha
1.0.0-beta
1.2.0-alpha1

استفاده از شناسه‌هایی مانند alpha، beta و rc رایج است، اما می‌توان از شناسه‌های دیگری هم استفاده کرد.

شروع یک پروژه

بسیاری از پروژه‌ها توسعه خود را با نسخه 0.1.0 آغاز می‌کنند. این شماره نشان می‌دهد API پروژه هنوز به ثبات کامل نرسیده است. پس از آماده‌شدن محصول برای انتشار رسمی، نسخه معمولاً به 1.0.0 تغییر می‌کند.


با رعایت این ساختار ساده، تیم‌ها و مصرف‌کنندگان یک پکیج می‌توانند بهتر تشخیص دهند که به‌روزرسانی جدید چه اثری بر سازگاری پروژه دارد.

نکته: اگر با کاربرد نسخه‌بندی معنایی در npm آشنا نیستید، مقاله SemVer در npm به زبان ساده را هم بخوانید.

اشتراک‌گذاری:Xin
نماد بصری علی عمرایی

علی عمرایی

مهندس ارشد فرانت‌اند با بیش از ۵ سال تجربه در React، Next.js، TypeScript و معماری فرانت‌اند سازمانی. درباره بهینه‌سازی، PWA، معماری و تجربه‌های پروژه‌های واقعی می‌نویسم.

نوشته‌های مرتبط

شاید این نوشته‌ها هم برای شما مفید باشند.

۵ دقیقه مطالعه

مشکل Memory Leak هنگام استفاده از hash در Webpack

در این مقاله یک مشکل رایج Memory Leak در Webpack هنگام استفاده از contenthash در محیط توسعه بررسی می‌شود و راه‌حلی عملی ارائه می‌شود.

خواندن نوشته
۳ دقیقه مطالعه

SemVer در npm به زبان ساده

در این مقاله می‌بینیم علامت‌های ^ و ~ در نسخه‌گذاری npm چه معنایی دارند و npm install چگونه با آن‌ها رفتار می‌کند.

خواندن نوشته