علی پالوانه
علی پالوانه
خواندن ۴ دقیقه·۲ سال پیش

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

سلام!

توی پست قبلی راجب دو فایل 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.c

2- اگر تغییرات خیلی عمده داشته باشیم بصورتی که نسخه جدید با نسخه قبلی کار نکنه عدد a تغییر میکنه که major هست

3- اگر به همون نسخه ما فقط یک سری ویژگی اضافه بشه b یا minor تغییر میکنه

4- اگر توی پکیجمون باگی رفع بشه c یا patch تغییر میکنه

5- استفاده از این قانون الزامی نیست اما مرسومه

6- هیچی وحی منزل نیست






نرم افزاربوت استرپبرنامه نویسیکدنویسیپکیج نرم افزار
که آفتاب بیاید...
شاید از این پست‌ها خوشتان بیاید