۲ دقیقه مطالعه
نسخهبندی معنایی (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 به زبان ساده را هم بخوانید.
نوشتههای مرتبط
شاید این نوشتهها هم برای شما مفید باشند.
مشکل Memory Leak هنگام استفاده از hash در Webpack
در این مقاله یک مشکل رایج Memory Leak در Webpack هنگام استفاده از contenthash در محیط توسعه بررسی میشود و راهحلی عملی ارائه میشود.
خواندن نوشتهSemVer در npm به زبان ساده
در این مقاله میبینیم علامتهای ^ و ~ در نسخهگذاری npm چه معنایی دارند و npm install چگونه با آنها رفتار میکند.
خواندن نوشته