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
- सेमांटिक वर्शन नहीं (विनिर्देश 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 का सेंटिनल है जो अगली श्रृंखला के प्रीरिलीज़ बाहर रखता है।
| रेंज | खोली गई |
|---|---|
| ^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.2.3-beta.1+build.5 जैसा वर्शन पेस्ट करें। नीचे सब कुछ टाइप करते ही अपडेट होता है - दबाने के लिए कोई बटन नहीं है।
- वैकल्पिक रूप से दाईं ओर ^1.2.0 जैसी npm रेंज पेस्ट करें ताकि देख सकें कि वर्शन और रेंज का क्या संबंध है।
- पहले बैज पढ़ें: मान्य है या नहीं, और यदि नहीं, तो कौन सा नियम किस कैरेक्टर पर टूटा।
- जब आपको रेंज का npm includePrerelease पाठ चाहिए तो "प्रीरिलीज़ शामिल करें" चुनें।
- पूरी समस्या सूची कॉपी या डाउनलोड करने के लिए 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 पैरामीटर नहीं - रीलोड सब कुछ साफ़ कर देता है।
संबंधित टूल
और डेवलपर सहायक जो पूरी तरह आपके ब्राउज़र में चलते हैं।