इसका इस्तेमाल कैसे करें
- वर्शन लिखें, जैसे 1.4.0, और चाहें तो इससे तुलना करें में दूसरा वर्शन, ताकि क्रम देखा जा सके।
- अगला वर्शन देखने के लिए बंप चुनें। प्री-रिलीज बंप के लिए नाम प्री-रिलीज का नाम में लिखें।
- जाँचने के लिए कि वर्शन रेंज में आता है या नहीं, रेंज लिखें, और रेंज कैसे पढ़ी गई पढ़ें ताकि हर हिस्से का मतलब दिखे।
- जरूरी जवाब के लिए बंप किया गया वर्शन, क्रम और रेंज की जाँच पढ़ें।
वर्शन कैसे क्रम में रखे जाते हैं
SemVer 2.0.0 मेजर, माइनर और पैच संख्याओं की तुलना संख्या के रूप में करता है। प्री-रिलीज टैग वाला वर्शन उसी वर्शन से पहले आता है जिसमें टैग नहीं है। प्री-रिलीज पहचानकर्ताओं की तुलना एक-एक करके होती है: संख्याएँ संख्या के रूप में, टेक्स्ट ASCII क्रम में, और संख्या टेक्स्ट से पहले। बिल्ड मेटाडेटा, यानी + के बाद का हिस्सा, नहीं गिना जाता।
- विशिष्टता के उदाहरणों का क्रम: 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।
- v से शुरू होने वाला वर्शन, जैसे v1.4.0, स्वीकार होता है और वह वर्शन का हिस्सा नहीं है।
बंप कैसे काम करता है
मेजर बंप पहली संख्या बढ़ाता है और बाकी दो को 0 पर रखता है। माइनर या पैच बंप अपने हिस्से के लिए यही करता है। जो वर्शन अभी प्री-रिलीज है, वह बंप पर रिलीज बन जाता है: 1.0.0-alpha मेजर बंप से 1.0.0 बन जाता है, जैसा node-semver करता है। प्री-रिलीज बंप दिए गए नाम के साथ अगला पैच शुरू करता है, जैसे 1.4.1-beta.0, या किसी मौजूदा प्री-रिलीज की आखिरी संख्या बढ़ाता है, जैसे beta.1 से beta.2।
रेंज कैसे पढ़ी जाती हैं
रेंज का रूप node-semver के अनुसार है, उस पैकेज के अनुसार जिसे npm इस्तेमाल करता है, और उसका README ग्रामर। हर रूप तुलनाओं को दर्शाता है: ^1.3.0 का मतलब है >=1.3.0 <2.0.0-0, ~1.2.3 का मतलब है >=1.2.3 <1.3.0-0, और 1.2.x का मतलब है >=1.2.0 <1.3.0-0। एक सेट की सारी तुलनाएँ सही होनी चाहिए। || से जुड़े सेट विकल्प हैं, और खाली सेट कोई भी वर्शन स्वीकार करता है, जैसे * करता है।
प्री-रिलीज और रेंज
1.5.0-beta.1 जैसा प्री-रिलीज वर्शन किसी रेंज में तभी आता है जब उसके सेट की कोई तुलना उसी 1.5.0 को प्री-रिलीज टैग के साथ बताए। इसलिए अधूरे वर्शन डिफॉल्ट रूप से रेंज के बाहर रहते हैं, जैसा node-semver के README में समझाया गया है। यह पेज वही नियम मानता है।
हल किया हुआ उदाहरण: 1.4.0, माइनर बंप और ^1.3.0 || 2.x
वर्शन 1.4.0, 1.4.0-beta.2 से ऊँचा है, क्योंकि रिलीज अपने प्री-रिलीज से ऊँची होती है। माइनर बंप 1.5.0 देता है। रेंज ^1.3.0 || 2.x को >=1.3.0 <2.0.0-0 या >=2.0.0 <3.0.0-0 की तरह पढ़ा जाता है, और 1.4.0 पहले सेट को पूरा करता है।
| इनपुट | परिणाम |
|---|---|
| 1.4.0 की तुलना 1.4.0-beta.2 से | 1.4.0, 1.4.0-beta.2 से ऊँचा है। |
| 1.4.0 का माइनर बंप | 1.5.0 |
| ^1.3.0 || 2.x में 1.4.0 | 1.4.0, ^1.3.0 || 2.x को पूरा करता है। |
अक्सर पूछे जाने वाले सवाल
क्या 1.0.0+build.1 वही वर्शन है जो 1.0.0 है?
क्रम और रेंज के लिए, हाँ। + के बाद का बिल्ड मेटाडेटा SemVer के क्रम में नहीं गिना जाता, इसलिए दोनों वर्शन क्रम में एक ही जगह रखते हैं। फिर भी पेज बिल्ड का टेक्स्ट दिखाता है, ताकि आप उसे देख सकें।
1.4.0-beta.2, 1.4.0 से नीचा क्यों है?
प्री-रिलीज अस्थिर होता है, और हो सकता है कि वह उस संगतता पर खरा न उतरे जिसका उसकी संख्या वादा करती है, इसलिए SemVer उसे उसी संख्या वाले रिलीज से पहले रखता है। इसलिए 1.4.0-beta.2, 1.4.0 से पहले आता है, और 1.4.0, 1.4.1 से पहले।
क्या ^1.3.0 में 2.0.0 आता है?
नहीं। कैरेट रेंज बाईं ओर की पहली गैर-शून्य संख्या रखती है, इसलिए ^1.3.0 का मतलब है 1.3.0 या उससे ऊपर, और 2.0.0 से नीचे। अगर दूसरा मेजर भी स्वीकार होना है, तो उदाहरण की तरह || 2.x भी लिखें।
~1.2 और ^1.2 में क्या अंतर है?
टिल्ड रेंज ~1.2 का मतलब है >=1.2.0 <1.3.0-0, इसलिए वह 1.2.9 जैसे पैच बदलाव स्वीकार करती है और 1.3.0 को नहीं। कैरेट रेंज ^1.2 का मतलब है >=1.2.0 <2.0.0-0, इसलिए वह 1.3.0 और 1.9.9 भी स्वीकार करती है, पर 2.0.0 नहीं।
रेंज 1.5.0-beta.1 को क्यों नहीं लेती?
प्री-रिलीज रेंज से बाहर रहते हैं, जब तक कोई तुलना उसी वर्शन को प्री-रिलीज टैग के साथ न बताए, जैसे >=1.5.0-beta.0। node-semver यह चुनाव इसलिए करता है क्योंकि प्री-रिलीज तेजी से बदलते हैं और चीजें तोड़ सकते हैं।
क्या मेरे वर्शन किसी सर्वर को भेजे जाते हैं?
नहीं। वर्शन, रेंज और तुलना आपके ब्राउज़र में पढ़े और जाँचे जाते हैं, और आप जो भी लिखते हैं, वह सहेजा नहीं जाता।
स्रोत
- Semantic Versioning 2.0.0 (अंग्रेजी में): विशिष्टता
- node-semver README (अंग्रेजी में): रेंज और रेंज ग्रामर (npm)
- node-semver README (अंग्रेजी में): प्री-रिलीज टैग (npm)
- node-semver रिपॉजिटरी (अंग्रेजी में), ISC लाइसेंस (npm)
आँकड़े और टेक्स्ट आखिरी बार मंगलवार, 10 नवंबर 2026 को जाँचे गए।