هر آنچه باید درباره ورژن بندی نرم افزار و پکیج ها بدانید

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