این ابزار درست کار نمی‌کند؟

دربارهٔ ابزار «کدام نسخه بزرگ‌تر است؟ (SemVer) آنلاین»

این ابزار دو نسخه SemVer (Semantic Versioning) — مانند ۱.۲.۳ در مقابل ۱.۳.۰-beta — را مقایسه می‌کند و به شما می‌گوید کدام جدیدتر است، چقدر تفاوت دارند، و چه نوع تغییری آنها را از هم جدا می‌کند (major، minor، patch، prerelease).

SemVer طرح نسخه‌گذاری استاندارد برای کتابخانه‌ها، بسته‌ها، و APIها است. این تأثیر تغییرات را نشان می‌دهد: افزایش major سازگاری را می‌شکند، minor ویژگی‌ها را اضافه می‌کند، patch باگ‌ها را رفع می‌کند، و برچسب‌های prerelease بیلدهای ناپایدار را علامت‌گذاری می‌کنند. خواندن صحیح SemVer هنگام به‌روزرسانی وابستگی‌ها حیاتی است.

ابزار دقیقاً از مشخصات SemVer 2.0 پیروی می‌کند، از جمله قوانین ترتیب prerelease. هنگام برنامه‌ریزی ارتقاء نسخه، مقایسه برچسب‌های انتشار در CI/CD، یا ساختن ابزارهای وابستگی که نیاز به ارزیابی محدودیت‌های نسخه دارند، مفید است.

چطور از این ابزار استفاده کنم؟

چطور دو نسخهٔ SemVer را مقایسه کنم؟

  1. دو نسخه را وارد کنید

    «Version A» و «Version B» هرکدام رشتهٔ SemVer مانند `1.2.3` می‌پذیرند. `v` ابتدا حذف می‌شود و patch موجود نباشد پیش‌فرض 0 می‌شود (پس `1.2` به‌صورت `1.2.0` parse می‌شود). pre-release/build metadata نادیده گرفته می‌شود — فقط major/minor/patch مقایسه می‌شود.

  2. «اجرا» را بزنید

    خروجی یک فیلد `cmp` است — `-1` اگر A < B، `0` اگر برابر، `1` اگر A > B. مقایسه component-wise است: ابتدا major، سپس minor، سپس patch.

  3. مثال‌ها

    `1.0.0` در برابر `1.0.1` → cmp -1. `2.0.0` در برابر `1.99.99` → cmp 1 (major برنده می‌شود). `1.2.3` در برابر `1.2.3-rc.1` → cmp 0 (pre-release اینجا نادیده گرفته شده، برخلاف SemVer کامل).

  4. تفاوت با SemVer واقعی

    SemVer سختگیر (semver.org) `1.2.3` را > `1.2.3-rc.1` می‌گیرد چون pre-release پایین‌تر از release sort می‌شود. این ابزار همه چیز بعد از patch را نادیده می‌گیرد — برای sanity check خوب، اما برای منطق `^/~` range نمی‌توان از کتابخانهٔ واقعی semver استفاده کرد.