حاسبة الإصدارات (SemVer)

اكتب إصداراً لترى أجزاءه، وترتيبه مقابل إصدار آخر، وإصداره التالي بعد الرفع، وهل يطابق نطاق npm. تتبع الصفحة قواعد SemVer 2.0.0 وصيغة النطاقات في node-semver.

مجانية تعمل داخل متصفحك آخر مراجعة: الثلاثاء، 30 جمادى الأولى 1448 بعد الهجرة

إصدار مثل 1.4.0، مع جزء اختياري -pre-release وجزء +build.

إصدار آخر يُرتَّب مقابل الأول. اتركه فارغاً لتتخطى المقارنة.

الجزء الذي يُرفع بمقدار واحد، والأجزاء التي تحته تعود إلى 0.

نطاق npm مثل ^1.3.0 أو ~1.2 أو >=1.2.0 <2.0.0. اتركه فارغاً لتتخطى الفحص.

النتيجة

الإصدار بعد الرفع — الإصدار بعد الرفع الذي اخترته.
الترتيب — أيّ الإصدارين يأتي أولاً حسب أولوية SemVer.
فحص النطاق — هل يطابق الإصدار النطاق.
أجزاء الإصدار

كيف يُقرأ النطاق

تعمل هذه الأداة داخل متصفحك. ما تكتبه فيها لا يُرسل إلينا.

طريقة الاستخدام

  1. اكتب الإصدار، مثل 1.4.0، واختيارياً إصداراً في المقارنة مع لترتيبه مقابله.
  2. اختر الرفع لترى الإصدار التالي. ولرفع ما قبل الإصدار سمِّ الإصدار التجريبي في اسم ما قبل الإصدار.
  3. اكتب النطاق لتفحص هل يطابقه الإصدار، واقرأ كيف يُقرأ النطاق لترى معنى كل جزء منه.
  4. اقرأ الإصدار بعد الرفع والترتيب وفحص النطاق للإجابة التي تحتاجها.

كيف تُرتَّب الإصدارات

يقارن SemVer 2.0.0 أرقام الرئيسي والثانوي والتصحيحي كأرقام. ويأتي الإصدار الذي له وسم ما قبل الإصدار قبل الإصدار نفسه دون وسم. وتُقارن معرّفات ما قبل الإصدار واحداً واحداً: الأرقام كأرقام، والنص بترتيب ASCII، والرقم قبل النص. ولا تُحسب بيانات البناء، وهي الجزء الذي يأتي بعد +.

  • ترتيب أمثلة المواصفة: 1.0.0-alpha، و1.0.0-alpha.1، و1.0.0-alpha.beta، و1.0.0-beta، و1.0.0-beta.2، و1.0.0-beta.11، و1.0.0-rc.1، ثم 1.0.0.
  • يُقبل الحرف v في البداية، كما في v1.4.0، ولا يُعد جزءاً من الإصدار.

كيف يعمل الرفع

يرفع الرفع الرئيسي الرقم الأول ويجعل الرقمين الآخرين 0. ويفعل الرفع الثانوي والتصحيحي الشيء نفسه لجزئهما. والإصدار الذي ما زال ما قبل إصدار يفقد وسمه حين يكون الرفع سيرفعه على أي حال: فـ1.0.0-alpha يصبح 1.0.0 بالرفع الرئيسي، كما يفعل node-semver. أما رفع ما قبل الإصدار فيبدأ التصحيح التالي بالاسم الذي تعطيه، مثل 1.4.1-beta.0، أو يرفع الرقم الأخير لما قبل إصدار موجود، مثل beta.1 إلى beta.2.

كيف تُقرأ النطاقات

تتبع صيغة النطاقات node-semver، وهي الحزمة التي يستخدمها npm، وفق قواعد README (باللغة الإنجليزية). فـ^1.3.0 تعني >=1.3.0 <2.0.0-0، و~1.2.3 تعني >=1.2.3 <1.3.0-0، و1.2.x تعني >=1.2.0 <1.3.0-0. ويجب أن تتحقق كل المقارنات داخل المجموعة الواحدة معاً. والمجموعات المفصولة بـ || بدائل، والمجموعة الفارغة تقبل أي إصدار، كما يفعل *.

ما قبل الإصدارات والنطاقات

لا يطابق إصدار ما قبل الإصدار، مثل 1.5.0-beta.1، نطاقاً إلا إذا كانت إحدى المقارنات في مجموعته تحمل الإصدار 1.5.0 نفسه مع وسم ما قبل الإصدار. لذلك تبقى الإصدارات غير المكتملة خارج النطاقات افتراضياً، كما يشرح README الخاص بـ node-semver (باللغة الإنجليزية). والفحص في هذه الصفحة يتبع هذه القاعدة.

مثال محلول: 1.4.0 مع رفع ثانوي و^1.3.0 || 2.x

الإصدار 1.4.0 أعلى من 1.4.0-beta.2، لأن الإصدار أعلى من إصداره التجريبي. ورفعه الثانوي يعطي 1.5.0. والنطاق ^1.3.0 || 2.x يُقرأ على أنه >=1.3.0 <2.0.0-0 أو >=2.0.0 <3.0.0-0، والإصدار 1.4.0 يطابق المجموعة الأولى.

المدخل النتيجة
1.4.0 مقارنةً بـ 1.4.0-beta.2 1.4.0 أعلى من 1.4.0-beta.2.
رفع ثانوي للإصدار 1.4.0 1.5.0
1.4.0 في ^1.3.0 || 2.x 1.4.0 يطابق ^1.3.0 || 2.x.

الأسئلة الشائعة

هل 1.0.0+build.1 هو الإصدار نفسه 1.0.0؟

في الترتيب والنطاقات، نعم. فبيانات البناء بعد + لا تُحسب في أولوية SemVer، فللإصدارين المكان نفسه في الترتيب. وتعرض الصفحة نص البناء مع ذلك لتراه.

لماذا يكون 1.4.0-beta.2 أدنى من 1.4.0؟

الإصدار التجريبي غير مستقر، وقد لا يحقق التوافق الذي يعد به رقمه، لذلك يضعه SemVer قبل الإصدار الذي له الأرقام نفسها. فيأتي 1.4.0-beta.2 قبل 1.4.0، ويأتي 1.4.0 قبل 1.4.1.

هل يقبل ^1.3.0 الإصدار 2.0.0؟

لا. فنطاق الكاريت يحافظ على أول رقم غير صفري من اليسار، فـ^1.3.0 يعني 1.3.0 فما فوق وأقل من 2.0.0. واكتب || 2.x أيضاً إن أردت قبول الرئيسي الثاني، كما في المثال.

ما الفرق بين ~1.2 و^1.2؟

يعني النطاق ~1.2 أن الإصدار >=1.2.0 <1.3.0-0، فيقبل تغييرات التصحيح مثل 1.2.9 ويرفض 1.3.0. أما النطاق ^1.2 فيعني >=1.2.0 <2.0.0-0، فيقبل 1.3.0 و1.9.9 أيضاً، لكنه لا يقبل 2.0.0.

لماذا يرفض النطاق 1.5.0-beta.1؟

تُستبعد الإصدارات التجريبية ما لم تذكر مقارنة الإصدار نفسه مع وسم ما قبل الإصدار، مثل >=1.5.0-beta.0. وقد اختار node-semver ذلك لأن الإصدارات التجريبية تتغير بسرعة وقد تكسر أشياء.

هل تُرسل إصداراتي إلى خادم؟

لا. يُقرأ الإصدار والنطاق والمقارنة ويُفحصون في متصفحك، ولا يُحفظ شيء مما تكتبه.

المصادر

آخر مراجعة للأرقام والنص: الثلاثاء، 30 جمادى الأولى 1448 بعد الهجرة.

نستخدم ملفات تعريف ارتباط ضرورية لتشغيل الموقع. وبموافقتك، تستخدم Google أيضاً ملفات تعريف ارتباط للإعلانات، لعرض إعلانات مخصصة. وإذا رفضتها، فستظل ترى إعلانات، لكنها لن تكون مخصصة لك.