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 loose মোড এটি 1.2.3-1 হিসেবে পড়ে এবং নীরবে নতুন করে লেখে।

কোন নিয়ম বই ব্যবহৃত হয়

  • ভার্সন স্ট্রিংয়ের রায় কঠোর SemVer 2.0.0 - কোনো loose মোড নেই, নতুন করে লেখা নেই, স্বাভাবিক করাও নেই।
  • রেঞ্জ 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 loose মোড সেগুলো গ্রহণ বা নতুন করে লেখে।
  • রেঞ্জ কেবল npm node-semver অনুসরণ করে - git describe, Cargo, PEP 440 ও Go মডিউল ভার্সন এর পরিসরে নেই।
  • রেজিস্ট্রি লুকআপ নেই: ^1.2.0 আসলে কোন ভার্সন ইনস্টল করবে তা এই টুল বলতে পারে না।
  • একসঙ্গে একটি ভার্সন ও একটি রেঞ্জ - ব্যাচ তালিকা, সাজানো, জোড়ায় তুলনা বা বাম্প প্রিভিউ নেই।
  • Number.MAX_SAFE_INTEGER-এর বেশি মূল সংখ্যা চিহ্নিত হয় এবং টেক্সট হিসেবে তুলনা হয়, কখনো JS সংখ্যায় রূপান্তরিত হয় না।
  • কিছুই পেজ ছাড়ে না: নেটওয়ার্ক নেই, স্টোরেজ নেই, URL প্যারামিটার নেই - রিলোড করলে সব মুছে যায়।

আরও ডেভেলপার সহায়ক, যা সম্পূর্ণভাবে আপনার ব্রাউজারে চলে।