تحقق من توافق إصدار مع نطاق SemVer
تحقّق في خطوة واحدة من دخول الإصدار في النطاق: يحقق 1.5.2 النطاق >=1.0.0 <2.0.0، بينما لا يحققه 1.5.0-beta.1، لأن النطاق الواسع لا يُدخل إصداراً غير مستقر عن طريق الخطأ أبداً. مجاناً في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
اختبر إصدار حزمة مقابل نطاق من الإصدارات الدلالية من دون تثبيت مدير حزم أو الاعتماد على مقارنة السلاسل النصية. تتحقق هذه الإمكانية من إصدار صارم وفق Semantic Versioning 2.0.0، وتحلل القيد المقدم، ثم تعرض نتيجة صحيحة أو خاطئة مباشرة. وهي تدعم الإصدارات المطابقة تمامًا، وعوامل مقارنة عدم المساواة، وتوافق caret وtilde، والتقاطعات المفصولة بمسافات، والبدائل ذات الشرطتين العموديتين. تؤدي الإصدارات أو تعبيرات النطاق غير الصحيحة إلى خطأ في الإدخال، مما يجعل الأداة مناسبة لعمليات الإصدار وتدقيق التبعيات وسياسات النشر واستكشاف المشكلات تفاعليًا.
اختر صيغة النطاق التي تعبر عن سياسة التوافق المطلوبة
ينبغي أن يصف النطاق الإصدارات التي يستطيع برنامجك قبولها فعليًا، لا أن يكون مجرد نص يشبه وسم إصدار. أدخل إصدارًا دلاليًا كاملًا مثل 1.4.7، ثم اختر إحدى صيغ القيود المدعومة. لا يقبل النطاق المطابق مثل 1.4.7 إلا إصدارًا له أسبقية SemVer نفسها.
وتحدد عوامل المقارنة مثل >=1.0.0 و<2.0.0 و<=3.5.1 حدودًا صريحة. افصل حدود المقارنة بمسافات لفرض استيفائها كلها، كما في >=1.0.0 <2.0.0. واستخدم شرطتين عموديتين للسماح بأحد بدائل متعددة، مثل ^1.8.0 || ^2.2.0.
تتعامل الأداة مع بيانات البناء الوصفية وفق SemVer، فتتحقق من صحتها من دون أن تغير الأسبقية. يجب أن تتضمن المدخلات أرقام major وminor وpatch، ولذلك ترفض الإصدارات المختصرة أو المتساهلة بدل تفسيرها بصورة ملتبسة. حقل satisfies الناتج قيمة منطقية مناسبة للاستخدام المباشر في الشروط.
كذلك تكرر الاستجابة الإصدار والنطاق المرسلين حتى توضح السجلات والواجهات السياسة التي جرى تقييمها بدقة.
افهم سلوك caret وtilde والإصدارات التمهيدية
يعبر نطاقا caret وtilde عن سياستين شائعتين للتوافق. يسمح نطاق caret عادة بالتغييرات التي لا تعدل أول مكون غير صفري من اليسار. لذلك يقبل ^1.2.3 الإصدارات بدءًا من 1.2.3 وحتى ما قبل 2.0.0.
أما الإصدارات التي يكون رقم major فيها صفرًا فلها حدود أضيق: ينتهي ^0.2.3 قبل 0.3.0، وينتهي ^0.0.3 قبل 0.0.4. يسمح نطاق tilde بتغييرات patch ضمن خط minor المحدد، ولذلك يبدأ ~1.2.3 من 1.2.3 وينتهي قبل 1.3.0. تحتاج الإصدارات التمهيدية إلى عناية خاصة كي لا يقبل نطاق عام نسخًا غير مستقرة بطريق الخطأ.
لا يستطيع إصدار تمهيدي استيفاء مجموعة مقارنات إلا إذا تضمنت المجموعة مقارنة تمهيدية لها قيم major وminor وpatch نفسها. مثلًا، قد يطابق 2.0.0-beta.2 النطاق >=2.0.0-beta.1 <2.0.0، لكن 1.5.0-beta.1 لا يطابق >=1.0.0 <2.0.0. يحافظ ذلك على السلوك الآمن المألوف لمديري الحزم وعلى أسبقية SemVer الصارمة بين معرفات الإصدارات التمهيدية.
وتجعل هذه الحدود سياسة الاستقرار المقصودة واضحة.
طبق فحوصًا حتمية في مسارات الإصدار والتبعيات
تفيد هذه الأداة كلما كان لا بد من تحويل سياسة إصدار إلى قرار قابل للتكرار. تستطيع مهمة تكامل مستمر التأكد من أن إصدار بيئة التشغيل يفي بمتطلبات الحزمة قبل بدء الاختبارات. ويمكن لخدمة النشر رفض عنصر برمجي يقع خارج خط إصدارات معتمد.
كما يستطيع سجل التبعيات تقييم الإصدارات المسجلة مقابل هدف ترحيل، بينما يمكن لفريق الدعم إعادة إنتاج نتيجة توافق مختلف عليها داخل المتصفح. لا يرسل التنفيذ طلبات عبر الشبكة، ولا يقرأ الساعة، ولا يولد قيمًا عشوائية، ولذلك تعطي المدخلات المتطابقة مخرجات متطابقة دائمًا. تجري مقارنة مكونات الإصدار الرقمية كسلاسل من الأرقام بدل تحويلها إلى أرقام JavaScript، مما يحافظ على صحة النتائج بعد حد الأعداد الصحيحة الآمنة.
حالات الاستخدام
طبق متطلبات بيئة التشغيل
تحقق من إصدار بيئة التشغيل أو الأداة المكتشف مقابل النطاق المدعوم قبل متابعة عملية البناء أو النشر.
دقق توافق الحزم
قيّم إصدارات التبعيات المثبتة مقابل سياسات التوافق المعلنة من دون تشغيل مدير حزم.
شخص اختيار الإصدار
أعد إنتاج قرارات caret وtilde والمقارنات والإصدارات التمهيدية مع نتيجة منطقية واضحة.
الأسئلة الشائعة
ما عوامل النطاق المدعومة؟
تدعم الأداة الإصدارات المطابقة و< و<= و> و>= و= وcaret وtilde وشروط AND المفصولة بمسافات وبدائل OR ذات الشرطتين العموديتين.
هل تؤثر بيانات البناء الوصفية في النتيجة؟
لا. يجري التحقق من صحتها، لكن SemVer يستبعدها من أسبقية الإصدارات.
لماذا لا يطابق إصدار تمهيدي نطاقًا واسعًا؟
لا يقبل الإصدار التمهيدي إلا إذا تضمنت مجموعة المقارنات إصدارًا تمهيديًا له قيم major وminor وpatch نفسها.
هل تقبل الإصدارات المختصرة أو نطاقات أحرف البدل؟
لا. يجب أن تتضمن الإصدارات مكونات major وminor وpatch، وتؤدي الصيغ المتساهلة أو أحرف البدل غير المدعومة إلى خطأ إدخال.
إلى أين يمتد نطاق علامة الإقحام مثل ^1.2.3؟
من 1.2.3 حتى ما قبل 2.0.0. وعندما يكون الرقم الرئيسي صفراً يضيق النطاق: يتوقف ^0.2.3 قبل 0.3.0 و^0.0.3 قبل 0.0.4. أما نطاق التلدة مثل ~1.2.3 فيتوقف قبل 1.3.0.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/dev2/package-version-range-check \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"version":"1.5.2","range":">=1.0.0 <2.0.0"}'const res = await fetch("https://api.kit.forhosting.com/dev2/package-version-range-check", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"version": "1.5.2",
"range": ">=1.0.0 <2.0.0"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev2/package-version-range-check",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"version": "1.5.2",
"range": ">=1.0.0 <2.0.0"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev2/package-version-range-check", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"version":"1.5.2","range":">=1.0.0 <2.0.0"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"version":"1.5.2","range":">=1.0.0 <2.0.0"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev2/package-version-range-check", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"version": "1.5.2",
"range": ">=1.0.0 <2.0.0"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev2.package_version_range_check",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_chars_per_input | 2048 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
طبق فحوصًا حتمية في مسارات الإصدار والتبعيات
تنتج صيغة النطاق غير الصالحة خطأ invalid_input بدل نتيجة خاطئة. هذا الفرق مهم: تعني النتيجة الخاطئة أن سياسة صالحة رفضت الإصدار، بينما يعني الخطأ أن السياسة نفسها تحتاج إلى تصحيح. استخدم المشغل التفاعلي للفحص السريع، أو استدع API مقابل $0.002 عندما يكون القرار جزءًا من عملية مؤتمتة.
أسئلة تقنية
ماذا يحدث إذا كان النطاق غير صحيح؟
تعيد الإمكانية خطأ invalid_input بدل معاملة السياسة غير الصحيحة بوصفها نطاقًا صالحًا غير مطابق.