সংক্ষেপে, বোভার সংস্করণ সংখ্যার (এবং এনপিএম এর) সিনট্যাক্সকে সেমভিয়ার বলা হয়, যা 'সিমেন্টিক ভার্সন' এর জন্য সংক্ষিপ্ত। আপনি নোড / এনপিএম এর মধ্যে সেমভার পার্সারের জন্য এপিআইতে বোভার এবং এনপিএম-তে ব্যবহৃত সেমভেরের বিশদ সিনট্যাক্সের জন্য ডকুমেন্টেশন পেতে পারেন । আপনি semver.org এ অন্তর্নিহিত বৈশিষ্ট সম্পর্কে (যা উল্লেখ না করে ~
বা অন্যান্য সিনট্যাক্সের বিবরণ দেয় না ) সম্পর্কে আরও শিখতে পারেন ।
আপনার সাথে খেলতে পারেন এমন একটি সুপার-হ্যান্ডি ভিজ্যুয়াল সেমভার ক্যালকুলেটর রয়েছে, যা এই সমস্তকে খুব সহজেই ছাঁটাই করা এবং পরীক্ষার জন্য সহজ করে তোলে।
সেমওয়ার কেবল একটি বাক্য গঠন নয়! এপিআই-র প্রকাশের সঠিক উপায়গুলি সম্পর্কে কিছু বলার মতো আকর্ষণীয় জিনিস রয়েছে যা সিনট্যাক্সটির অর্থ বুঝতে সাহায্য করবে। গভীরভাবে:
একবার আপনি আপনার সর্বজনীন এপিআই সনাক্ত করে ফেললে আপনি নিজের সংস্করণ নম্বরে নির্দিষ্ট বর্ধিতকরণের সাথে এতে পরিবর্তনগুলি যোগাযোগ করেন। এক্সওয়াইজেড (মেজর.মিনোর.প্যাচ) এর একটি সংস্করণ বিন্যাস বিবেচনা করুন । ত্রুটি সংশোধনগুলি এপিআই বৃদ্ধি প্যাচ সংস্করণকে প্রভাবিত করে না, পিছনের দিকে সামঞ্জস্যপূর্ণ এপিআই সংযোজন / পরিবর্তনগুলি গৌণ সংস্করণে বৃদ্ধি করে এবং পিছনে অসামঞ্জস্যপূর্ণ এপিআই পরিবর্তনগুলি প্রধান সংস্করণে বৃদ্ধি করে।
সুতরাং, আপনার নির্দিষ্ট প্রশ্নটি ~
সেই মেজর.মিনোর.প্যাচ স্কিমা সম্পর্কিত। (সম্পর্কিত ক্যারেট অপারেটর হিসাবে ^
।) আপনি ~
যে সংস্করণগুলি গ্রহণ করতে ইচ্ছুক তার পরিসর সংকীর্ণ করতে আপনি ব্যবহার করতে পারেন :
- পরবর্তী প্যাচ-লেভেল একই ছোটখাটো সংস্করণে পরিবর্তন হয় ( "বাগের সংশোধনগুলি এপিআইকে প্রভাবিত করে না" ), বা:
- একই প্রধান সংস্করণে পরবর্তী ক্ষুদ্র-স্তরের পরিবর্তনগুলি ( "পিছনে সামঞ্জস্যপূর্ণ এপিআই সংযোজন / পরিবর্তন" )
উদাহরণস্বরূপ: আপনি 1.2.x গাছের উপরের পরবর্তী প্যাচ-স্তর পরিবর্তনগুলি 1.2.0 থেকে শুরু করে, কিন্তু 1.3.0 এর চেয়ে কম ব্যবহার করবেন তা চিহ্নিত করতে আপনি:
"angular": "~1.2"
or:
"angular": "~1.2.0"
এটি আপনাকে .x
সিনট্যাক্স ব্যবহারের মতো একই ফলাফল পেতে পারে :
"angular": "1.2.x"
তবে, আপনি টিলড / ~
সিনট্যাক্সটি আরও সুনির্দিষ্ট করতে ব্যবহার করতে পারেন : আপনি যদি 1.2.4 দিয়ে শুরু প্যাচ-স্তরীয় পরিবর্তনগুলি গ্রহণ করতে ইচ্ছুক হন তবে এখনও 1.3.0 এর চেয়ে কম, আপনি ব্যবহার করতে চান:
"angular": "~1.2.4"
আপনি যদি ব্যবহার করেন তবে প্রধান সংস্করণটির দিকে বাম দিকে সরে যাওয়া ...
"angular": "~1"
... এটি যেমন ...
"angular": "1.x"
or:
"angular": "^1.0.0"
... এবং কোনও সামান্য- বা প্যাচ-স্তর পরিবর্তনগুলি 1.0.0 এর উপরে এবং 2.0 এরও কমের সাথে মেলে:
উপরের সর্বশেষ প্রকরণটি নোট করুন: এটিকে একটি 'ক্যারেট ব্যাপ্তি' বলা হয় । ক্যারেটটি দেখতে ভীষণ ভয়ঙ্কর দেখায় >
, তাই এর অর্থ " 1.0.0 এর চেয়ে বড় সংস্করণ" এর অর্থ আপনি ভেবে ক্ষুব্ধ হবেন । (আমি অবশ্যই এতে পিছলে পড়েছি।) নাহ!
ক্যারেট ব্যাপ্তিগুলি মূলত এটির জন্য ব্যবহৃত হয় যে আপনি কেবল বাম-সর্বাধিক উল্লেখযোগ্য অঙ্ক - সাধারণত প্রধান সংস্করণ - এবং আপনি যে কোনও ন্যূনতম- বা প্যাচ-স্তরীয় পরিবর্তনের অনুমতি পাবেন যা এই বাম-সর্বাধিক অঙ্ককে প্রভাবিত করে না। তবুও, একটি টিলড রেঞ্জের বিপরীতে যা একটি বড় সংস্করণ নির্দিষ্ট করে, ক্যারেট রেঞ্জগুলি আপনাকে একটি সুনির্দিষ্ট ছোট / প্যাচ শুরুর পয়েন্ট নির্দিষ্ট করতে দেয়। সুতরাং, ^1.0.0 === ~1
কোনও কেরেটের ব্যাপ্তি যেমন ^1.2.3
আপনাকে বলতে দেয় যে আপনি কোনও পরিবর্তন আনবেন >=1.2.3 && <2.0.0
। টিলড রেঞ্জের সাহায্যে আপনি এটি করতে পারেন নি।
এটি প্রথমে বিভ্রান্তিকর বলে মনে হয়, যখন আপনি এটিকে কাছাকাছি দেখেন। তবে এক সেকেন্ডের জন্য জুম আউট করুন এবং এটি নিয়ে এইভাবে ভাবুন: ক্যারেটটি কেবল আপনাকে বলতে দেয় যে গুরুত্বপূর্ণ অঙ্কটি সবচেয়ে বেশি বামে সবচেয়ে বেশি সে সম্পর্কে আপনি সবচেয়ে বেশি উদ্বিগ্ন। টিল্ড আপনাকে বলতে দেয় যে কোনও সংখ্যার ডান-সর্বাধিক সেক্ষেত্রে আপনি সবচেয়ে বেশি উদ্বিগ্ন। বাকীটি বিশদ।
এটি টিলড এবং ক্যারেটের উদ্বেগজনক শক্তি যা ব্যাখ্যা করে যে লোকেরা কেন তাদের সরল .x
বাক্য গঠনগুলির চেয়ে বেশি ব্যবহার করে : এগুলি কেবল আপনাকে আরও বেশি করতে দেয়। এজন্য আপনি টিলড দেখতে পাবেন যেখানে প্রায়শই ব্যবহৃত হয় .x
। নিজস্ব package.json ফাইলে নির্ভরতা প্রচুর রয়েছে: উদাহরণস্বরূপ, npm নিজেই দেখতে ~2.4.0
বিন্যাস বদলে 2.4.x
বিন্যাস এটা পারে ব্যবহার করুন। লেগে থাকা দ্বারা ~
, সিনট্যাক্সটি 70+ সংস্করণ নির্ভর নির্ভরতার তালিকার সমস্ত দিক দিয়েই সামঞ্জস্যপূর্ণ, তা বিবেচনা না করেই যে প্রারম্ভিক প্যাচ সংখ্যাটি গ্রহণযোগ্য।
যাইহোক, সেমভিয়ারের আরও অনেক কিছু আছে, তবে আমি এখানে সমস্ত বিস্তারিত জানার চেষ্টা করব না। নোড সেমভার প্যাকেজের রিডমে এটি পরীক্ষা করে দেখুন । এবং আপনি যখন অনুশীলন করছেন এবং SemVer কীভাবে কাজ করে তার চারপাশে আপনার মাথা পেতে চেষ্টা করার সময় অর্থপূর্ণ সংস্করণী ক্যালকুলেটরটি ব্যবহার করার বিষয়ে নিশ্চিত হন ।
পুনরায়: অ-ধারাবাহিক সংস্করণ নম্বর: ওপির চূড়ান্ত প্রশ্নটি মনে হয় না যে ধারাবাহিক সংস্করণ সংখ্যা / রেঞ্জগুলি নির্দিষ্ট করা (যদি আমি এটি মোটামুটি সম্পাদনা করেছি)। হ্যাঁ, আপনি সাধারণ ডাবল পাইপ "বা" অপারেটর: ব্যবহার করে এটি করতে পারেন ||
। তাই ভালো:
"angular": "1.2 <= 1.2.9 || >2.0.0"