SemVer वैलिडेटर

सेमांटिक वर्शन जाँचें और रेंज पार्स करें।

क्या वर्शन माना जाता है

सख़्त 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
सेमांटिक वर्शन नहीं (विनिर्देश FAQ)
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
एक सेट में कंपरेटरों का AND
1.2.3 - 2.0.0
समावेशी रेंज, दोनों ओर स्पेस ज़रूरी
1.2.x / 1.x / *
आंशिक वर्शन और वाइल्डकार्ड
a || b
संघ: कोई भी सेट मेल खा सकता है
~>1.2.3
npm ऐतिहासिक उपनाम, ~1.2.3 की तरह संभाला जाता है

npm आंशिक वर्शन कैसे भरता है

node-semver के विरुद्ध सत्यापित; -0 प्रत्यय npm का सेंटिनल है जो अगली श्रृंखला के प्रीरिलीज़ बाहर रखता है।

npm आंशिक वर्शन कैसे भरता है
रेंजखोली गई
^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 और चैट लॉग से पेस्ट होकर आती हैं।

"1.2.3",
उद्धरण और कॉमा package.json से साथ आ गए - केवल वर्शन पेस्ट करें।
v1.2.3
Git टैग में v होता है, सेमांटिक वर्शन में नहीं।
1.2
दो संख्याएँ रेंज हैं, वर्शन नहीं।
1.2.3-01
npm का ढीला मोड इसे 1.2.3-1 पढ़ता है और चुपचाप फिर लिख देता है।

कौन सी नियम पुस्तिका इस्तेमाल होती है

  • वर्शन स्ट्रिंग पर निर्णय सख़्त SemVer 2.0.0 है - कोई ढीला मोड, कोई फिर से लिखना, कोई सामान्यीकरण नहीं।
  • रेंज npm node-semver का पालन करती हैं, क्योंकि SemVer विनिर्देश रेंज परिभाषित नहीं करता।
  • यह टूल रेंज पर npm से सख़्त है: रेंज के अंदर v उपसर्ग या शुरुआती शून्य अस्वीकार होता है, और || का खाली पक्ष "कोई भी वर्शन" के बजाय त्रुटि है।
  • अमान्य वर्शन के लिए दिखाए गए npm पाठ semver.valid(v, {loose:true}) और semver.coerce(v) से आते हैं। वे केवल जानकारी हैं - कभी पास नहीं।
  • स्थितियाँ कोड पॉइंट गिनती हैं और इंटरफ़ेस में 1 से शुरू होती हैं, JSON में 0 से।

इसका उपयोग कैसे करें

  1. बाएँ फ़ील्ड में 1.2.3-beta.1+build.5 जैसा वर्शन पेस्ट करें। नीचे सब कुछ टाइप करते ही अपडेट होता है - दबाने के लिए कोई बटन नहीं है।
  2. वैकल्पिक रूप से दाईं ओर ^1.2.0 जैसी npm रेंज पेस्ट करें ताकि देख सकें कि वर्शन और रेंज का क्या संबंध है।
  3. पहले बैज पढ़ें: मान्य है या नहीं, और यदि नहीं, तो कौन सा नियम किस कैरेक्टर पर टूटा।
  4. जब आपको रेंज का npm includePrerelease पाठ चाहिए तो "प्रीरिलीज़ शामिल करें" चुनें।
  5. पूरी समस्या सूची कॉपी या डाउनलोड करने के लिए JSON परिणाम खोलें।

हल किया उदाहरण

वर्शन + रेंज

1.2.3-beta.1+build.5  ^1.2.0

परिणाम

मान्य SemVer (MAJOR 1, MINOR 2, PATCH 3, प्रीरिलीज़ beta.1, बिल्ड build.5)। ^1.2.0 खुलकर >=1.2.0 <2.0.0-0 बनता है, सीमाएँ [1.2.0, 2.0.0)। निर्णय: संतुष्ट नहीं - सेट में 1.2.3 के लिए कोई प्रीरिलीज़ कंपरेटर नहीं है।

"प्रीरिलीज़ शामिल करें" चुनने पर वही जोड़ी संतुष्ट हो जाती है।

सीमाएँ

  • निर्णय सख़्त SemVer 2.0.0 है, इसलिए v1.2.3 और 1.2.3-01 अस्वीकार होते हैं, भले ही npm का ढीला मोड उन्हें स्वीकार या फिर लिख देता है।
  • रेंज केवल npm node-semver का पालन करती हैं - git describe, Cargo, PEP 440 और Go मॉड्यूल वर्शन इस दायरे से बाहर हैं।
  • कोई रजिस्ट्री लुकअप नहीं: टूल नहीं बता सकता कि ^1.2.0 असल में कौन सा वर्शन इंस्टॉल करेगा।
  • एक बार में एक वर्शन और एक रेंज - कोई बैच सूची, क्रमबद्धता, जोड़ीवार तुलना या बंप पूर्वावलोकन नहीं।
  • Number.MAX_SAFE_INTEGER से ऊपर की मुख्य संख्याएँ चिह्नित होती हैं और टेक्स्ट के रूप में तुलना होती हैं, कभी JS संख्या में नहीं बदलतीं।
  • कुछ पेज से बाहर नहीं जाता: कोई नेटवर्क, स्टोरेज या URL पैरामीटर नहीं - रीलोड सब कुछ साफ़ कर देता है।

और डेवलपर सहायक जो पूरी तरह आपके ब्राउज़र में चलते हैं।