سلام!
توی پست قبلی راجب دو فایل package.json و package-lock.json صحبت کردیم ( اینجا بخون ) که چرا وقتی با پکیج های npm کار میکنیم برامون ایجاد میشن و خب خیلی راجب ورژن بندی پکیج ها بحث شد که قرار شد توی این پست به صورت کامل راجب منطق پشت ورژن بندی یا نسخه ها صحبت کنیم.
خب با یه مثال شروع کنیم :
ما قصد استفاده از کتابخونه jQuery رو داریم که یه کتابخونه معروف و قدیمی برای جاوا اسکریپت هستش و خب توی تصویر زیر آخرین ورژن این کتابخونه مشخص شده
به ورژن این کتابخونه دقت کنید که از یک عدد سه رقمی تشکیل شده که با استفاده از دات "." رقم ها از هم جدا شدن (اون V هم مخفف کلمه Version هستش)
پس هر ورژن به صورت اعداد a.b.c وجود دارن که تو مثال بالا 3.6.3 هستش امااا این اعداد بی صاحب نیستن و هر بخش اسم خودشو داره که کافیه عکس زیر رو نگاه کنین
عدد اول ما به major معروفه که به معنی عمده هستش و هربار توی یک پکیج یا نرم افزار این عدد تغییر کنه یعنی چی اتفاقی افتاده؟
وقتی این عدد تغییر میکنه یه عدد به a اضافه میشه یعنی همونجوری که از معنیش هم پیداست تغییرات عمده ای توی پکیجمون ایجاد شده بطوریکه دستورات این نسخه یا ورژن توی ورژن قبلی کار نمیکنن یعنی چی بازم؟
ما از جی کوییری نسخه 3.6.3 استفاده میکنیم که یهویی جی کوییری میاد میگه آقااا ما نسخه 4 رو منتشر کردیم که حالا شده 4.0.0
پس اگر شما کدهای جی کوییری رو با نسخه 3 زده باشین و یهو جی کوییری رو به نسخه 4 آپدیت کنین ممکنه سایتتون به مشکل بخوره و خیلی از دستورات کار نکنن
پس مجبورین داکیومنت نسخه 4.0.0 رو خوب بخونین و اون تغییرات رو توی کدهای قدیمیتون اعمال کنین تا دوباره سایتتون نفسش برگرده ??
عدد دوم که b هست بهش minor گفته میشه که به معنی جزئی هستش اما خب این عدد کی تغییر میکنه؟
هربار یه نسخه از یه نرم افزار یا پکیج منتشر بشه و هربار بهش یه سری ویژگی و امکانات جدید اضافه بشه این عدد یکی بیشتر میشه
مثلا فکر کنین ما از نسخه 4.2.5 بوت استرپ استفاده میکنیم که یه کتابخونه برای CSS هستش
توی این نسخه، بوت استرپ ما برای رنگ های آبی و قرمز یه کلاس خاص داره
حالااااااااااا به این نتیجه میرسن که بیاین یه کلاس خاص هم برای رنگ های نارنجی و زرد درست کنیم و پکیجمون رو بهتر بکنیم اینجااااااست که بوت استرپ یه نسخه جدید منتشر میکنه که ورژن 4.2.5 ما تغییر میکنه به 4.3.5 حالا گرفتین؟
ما همچنان میتونیم از نسخه قدیمی استفاده کنیم و هیچ مشکلی نداره اماااا اگر بوت استرپ رو آپدیت کنیم دستمون بازتره و میتونیم رنگ های نارنجی و زرد رو هم داشته باشیم
اگرم استفاده نکنیم هم مشکلی پیش نمیاد و همچنان بوت استرپ ما مثل بنزی که صرفا رنگ نارنجی و زرد نداره کار میکنه
عدد سومی c هستش که بهش میگن patch که به معنی وصله و تکه هست (فکر کنم بی ربطه??)
بیاین باز از مثال های خودمون استفاده کنیم
نسخه 3.6.3 جی کوییری رو داریم استفاده میکنیم که میبینیم یه سری دستوراتش انگار درست کار نمیکنن یا تو سایت مشکل بوجود میارن...
اینجاست که ما به باااااااگ خووووردیم?
اما این باگ از دستورات ما نیست و متوجه میشیم که این باگ از سمت خود کتابخونه جی کوییریه
پس حالا توسعه دهنده های جی کوییری هم سریع متوجه میشن و این باگ رو رفع میکنن
دقت کنین نه تغییر عمده داشتیم که major تغییر کنه نه ویژگی خاصی استفاده شده که minor تغییر کنه
فقط باگ رفع شده که در این صورت نسخه جدید بعد رفع باگ منتشر میشه و یه عدد patch ما بیشتر میشه و حالا جی کوییری یه نسخه جدید منتشر میکنه که از 3.6.3 تبدیل شده به 3.6.4 ?
1- هرنسخه از یک عدد سه رقمی تشکیل شده a.b.c
2- اگر تغییرات خیلی عمده داشته باشیم بصورتی که نسخه جدید با نسخه قبلی کار نکنه عدد a تغییر میکنه که major هست
3- اگر به همون نسخه ما فقط یک سری ویژگی اضافه بشه b یا minor تغییر میکنه
4- اگر توی پکیجمون باگی رفع بشه c یا patch تغییر میکنه
5- استفاده از این قانون الزامی نیست اما مرسومه
6- هیچی وحی منزل نیست