مدقّق الإصدارات الدلالية
تحقّق من صيغة SemVer وحلّل النطاقات.
تحليل الإصدار
- الرقم الرئيسي MAJOR
- الرقم الثانوي MINOR
- رقم التنقيح PATCH
- نسخة ما قبل الإصدار
- بيانات البناء
تحليل النطاق
نتيجة JSON
ما الذي يُعدّ رقم إصدار
نحو SemVer 2.0.0 الصارم: ثلاثة أعداد صحيحة ASCII غير سالبة وبلا أصفار في البداية.
- MAJOR.MINOR.PATCH
- تغيير غير متوافق / إضافة متوافقة / إصلاح
- 1.2.3-alpha.1
- نسخة قبل الإصدار، أسبقيتها أقل من 1.2.3
- 1.2.3+build.5
- بيانات بناء، لا تدخل في الأسبقية
- 1.2.3-0.3
- الأرقام داخل نسخة ما قبل الإصدار تُقارن كقيم
- v1.2.3
- ليس إصدارًا دلاليًا (نصّ الأسئلة الشائعة)
- 01.2.3
- غير صالح: صفر في البداية
- 1.2.3-01
- غير صالح: صفر في مُعرِّف رقمي
- 1.2.3+0.09
- صالح: يُسمح بالأصفار في بيانات البناء
عوامل النطاق
- 1.2.3
- هذا الإصدار بالضبط
- ^1.2.3
- متوافق: >=1.2.3 <2.0.0-0
- ~1.2.3
- تنقيح فقط: >=1.2.3 <1.3.0-0
- >=1.2.3 <2.0.0
- علاقة «و» داخل مجموعة واحدة
- 1.2.3 - 2.0.0
- نطاق مغلق، والمسافة مطلوبة على الطرفين
- 1.2.x / 1.x / *
- إصدارات جزئية وأحرف بديلة
- a || b
- اتحاد: تكفي مجموعة واحدة
- ~>1.2.3
- اسم مستعار في npm ويُعامل مثل ~1.2.3
كيف تُكمل npm الإصدارات الجزئية
النتائج موافقة لقياسات node-semver، و-0 تستبعد نسخ ما قبل الإصدار من السلسلة التالية.
| النطاق | بعد التوسيع |
|---|---|
| ^1.2.3 | >=1.2.3 <2.0.0-0 |
| ^0.2.3 | >=0.2.3 <0.3.0-0 |
| ^0.0.3 | >=0.0.3 <0.0.4-0 |
| ^1 | >=1.0.0 <2.0.0-0 |
| ~1.2.3 | >=1.2.3 <1.3.0-0 |
| ~1.2 | >=1.2.0 <1.3.0-0 |
| ~1 | >=1.0.0 <2.0.0-0 |
| 1.2.x | >=1.2.0 <1.3.0-0 |
| 1.x | >=1.0.0 <2.0.0-0 |
| 1.2.3 - 2.0.0 | >=1.2.3 <=2.0.0 |
| 1.2.3 - 2 | >=1.2.3 <3.0.0-0 |
| >1.x | >=2.0.0 |
أسبقية نسخ ما قبل الإصدار
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
المُعرِّفات الرقمية تُقارن كقيم وتأتي قبل الأبجدية، والمجموعة الأقصر أسبقية أقل. بيانات البناء لا تؤثر أبدًا.
أخطاء شائعة
أغلبها يُنسخ مباشرة من package.json أو من المحادثات.
- ١.٢.٣
- أرقام عربية-هندية: الحرف الأول هو U+0661، وSemVer يقبل أرقام ASCII فقط من 0 إلى 9، ولا تجري أي مطابقة تلقائية.
- 1٫2٫3
- فاصلة الكسر العربية U+066B تبدو كنقطة لكنها حرف غير مسموح.
- v1.2.3
- وسوم git تحمل v أما الإصدارات الدلالية فلا؛ npm المتساهل يقرأه 1.2.3.
- 1.2.3-01
- صفر في مُعرِّف رقمي؛ يقرأه npm المتساهل 1.2.3-1 — وهذا بالضبط ما تعرضه أدوات أخرى على أنه صالح.
أي مرجاع نُعتمد
- حكم رقم الإصدار هو SemVer 2.0.0 الصارم: لا وضع متساهل، ولا إعادة كتابة، ولا مطابقة تلقائية.
- النطاقات تتبع node-semver الخاصة بـ npm، لأن مواصفة SemVer نفسها لا تُعرِّف النطاقات.
- في النطاقات الأداة أشد من npm: لا تقبل بادئة v ولا الأصفار في البداية، وتعدّ الطرف الفارغ في || خطأً بدلًا من «أي إصدار».
- القراءتان المعروضتان بجانب الإصدار غير الصالح تأتيان من semver.valid(v, {loose:true}) وsemver.coerce(v)، وهما للمعلومة فقط ولا تعنيان القبول.
- المواضع تُعدّ بالنقاط الرمزية: من 1 في الواجهة، ومن 0 في JSON.
طريقة الاستخدام
- الصق رقم إصدار مثل 1.2.3-beta.1+build.5 في الخانة اليسرى؛ تتحدَّث النتائج أثناء الكتابة بلا أي زر.
- أضف نطاق npm مثل ^1.2.0 في الخانة اليمنى إن أردت علاقة الإصدار بالنطاق.
- اقرأ الشارة أولًا: هل الإصدار صالح؟ وإن لم يكن فأي قاعدة خُولفت وفي أي حرف.
- فعّل «تضمين نسخ ما قبل الإصدار» للحصول على قراءة npm بمنظار includePrerelease.
- وسِّع «نتيجة JSON» لنسخ أو تنزيل قائمة المشاكل كاملة.
مثال مُحلَّى
الإصدار + النطاق
١.٢.٣ ~1.2.3
النتيجة
الإصدار غير صالح: الحرف الأول U+0661 رقم عربي-هندي، ونحو SemVer يقبل أرقام ASCII فقط. النطاق ~1.2.3 يتوسّع إلى >=1.2.3 <1.3.0-0 ويبقى معزولًا من اليسار إلى اليمين داخل صفحة من اليمين إلى اليسار.
استبدله بـ 1.2.3 فيصبح صالحًا ويُستوفى النطاق.
القيود
- الحكم صارم وفق SemVer 2.0.0، لذا يُرفض v1.2.3 و1.2.3-01 رغم أن وضع npm المتساهل يقبلهما أو يعيد كتابتهما.
- النطاقات تنفّذ subset شائعًا من node-semver فقط، ولا تتناول git describe أو Cargo أو PEP 440 أو إصدارات Go module.
- لا استعلام عن المستودعات: لا تخبر الأداة بأي إصدار سيُثبَّت فعلًا مع ^1.2.0.
- إصدار واحد ونطاق واحد في كل مرة: لا دفعات، ولا ترتيب، ولا مقارنة بين إصدارين، ولا اقتراح للزيادة.
- الأرقام التي تتجاوز Number.MAX_SAFE_INTEGER تُوسم وتُقارن كنص، ولا تُحوَّل إلى قيمة عددية.
- بلا شبكة وبلا تخزين وبلا سجل: التحديث يمسح كل شيء، والإدخال يبقى في ذاكرة الصفحة.
أدوات ذات صلة
أدوات أخرى للمطوّر تعمل داخل المتصفح بالكامل.