node.js - tutorial - npm install windows




প্যাকেজ.জson মধ্যে tilde(~) এবং ক্যারেট(^) মধ্যে পার্থক্য কি? (10)

আমি সর্বশেষ স্থিতিশীল node এবং npm আপগ্রেড করার পরে, আমি npm install moment --save । এটি package.json caret(^) উপসর্গের সাথে package.json এন্ট্রি সংরক্ষণ করে। পূর্বে, এটি একটি tilde(~) উপসর্গ ছিল।

  1. কেন এই পরিবর্তন npm তৈরি করা হয়?
  2. tilde(~) এবং caret(^) মধ্যে পার্থক্য কি?
  3. অন্যদের উপর সুবিধা কি?

সবচেয়ে সহজ শর্তে, টিল্ড সাম্প্রতিক সামান্য সংস্করণ (মধ্যম সংখ্যা) সাথে মেলে। ~ 1.2.3 সব 1.2.x সংস্করণ মেলে কিন্তু 1.3.0 মিস্ হবে।

অন্যদিকে, ক্যারেট আরও স্বচ্ছন্দ। এটি আপনাকে সাম্প্রতিকতম প্রধান সংস্করণে (প্রথম সংখ্যা) আপডেট করবে। ^ 1.2.3 1.3.0 সহ কোনও 1.xx রিলিজ মিলবে, তবে 2.0.0 এ বন্ধ হবে।

http://fredkschott.com/post/2014/02/npm-no-longer-defaults-to-tildes/

নোট করুন যে লেখকের পরিভাষাটি কিছুটা বিভ্রান্তিকর: যখন তিনি বলেছেন "এর জন্য সাম্প্রতিক সামান্য সংস্করণ" মানে "নির্দিষ্ট সংখ্যক ছোট সংস্করণে সাম্প্রতিকতম প্যাচ সংস্করণ"। একইভাবে ^, "সর্বাধিক সাম্প্রতিক প্রধান সংস্করণ" হিসাবে উল্লেখ করা উচিত "নির্দিষ্ট প্রধান সংস্করণে সাম্প্রতিকতম সামান্য সংস্করণ"।


Semver

<major>.<minor>.<patch>-beta.<beta> == 1.2.3-beta.2
  • পরীক্ষার জন্য semver.npmjs.com ব্যবহার করুন। (^ এর জন্য ব্যাখ্যাগুলি (একই প্রধান পরিসরের একটি বিশেষ সংস্করণের চেয়ে সবকিছু অন্তর্ভুক্ত) এবং ~ (সীমাবদ্ধ সংখ্যায় একই ছোট সংস্করণের চেয়ে বড় সবকিছু অন্তর্ভুক্ত) 100% সঠিক নয়, ক্যালকুলেটর ঠিক কাজ করে বলে মনে হচ্ছে )
  • পরিবর্তে, পরিবর্তে সেভিভার চেক ব্যবহার করুন, যা আপনাকে একটি প্যাকেজ বাছাই করার প্রয়োজন নেই এবং ব্যাখ্যা প্রদান করে।

অনুমতি দিন বা পরিবর্তন নিষিদ্ধ

  • পিন সংস্করণ: 1.2.3
  • ^ (মত মাথা) ব্যবহার করুন। বাম দিক থেকে দ্বিতীয় অ-শূন্য স্তরে আপডেটগুলিকে অনুমতি দেয়: ^0.2.3 মানে 0.2.3 <= v < 0.3
  • ~ (লেজ মত) ব্যবহার করুন। সাধারণত সর্বাধিক স্তরটি স্থির করুন বা বাদ দেওয়া শূন্য সেট করুন:
    • ~1 মানে 1.0.0 <= v < 2.0.0
    • ~1.2 মানে 1.2.0 <= v < 1.3.0
    • ~1.2.4 মানে 1.2.4 <= v < 1.3.0
  • সর্বাধিক স্তর সীমাবদ্ধ করুন: 0.2 মানে 0.2 <= v < 1~ থেকে পৃথক্ কারণ:
    • বাদ দেওয়া স্তর সংস্করণ সর্বদা 0
    • আপনি sublevels উল্লেখ ছাড়া শুরু প্রধান সংস্করণ সেট করতে পারেন।

সব (আশা) সম্ভাবনার

প্রধান স্তরের শুরু সেট আপ এবং আপডেট আপওয়ার্ড

*  or "" (empty string)   any version
1                         v >= 1

প্রধান স্তরের ফ্রিজ

~0 (0)            0.0 <= v < 1
0.2               0.2 <= v < 1          // Can't do that with ^ or ~ 
~1 (1, ^1)        1 <= v < 2
^1.2              1.2 <= v < 2
^1.2.3            1.2.3 <= v < 2
^1.2.3-beta.4     1.2.3-beta.4 <= v < 2

ছোটখাট স্তর নিশ্চিহ্ন করা

^0.0 (0.0)        0 <= v < 0.1
~0.2              0.2 <= v < 0.3
~1.2              1.2 <= v < 1.3
~0.2.3 (^0.2.3)   0.2.3 <= v < 0.3
~1.2.3            1.2.3 <= v < 1.3

প্যাচ-স্তর ফ্রিজ

~1.2.3-beta.4     1.2.3-beta.4 <= v < 1.2.4 (only beta or pr allowed)
^0.0.3-beta       0.0.3-beta.0 <= v < 0.0.4 or 0.0.3-pr.0 <= v < 0.0.4 (only beta or pr allowed)
^0.0.3-beta.4     0.0.3-beta.4 <= v < 0.0.4 or 0.0.3-pr.4 <= v < 0.0.4 (only beta or pr allowed)

আপডেট নিষিদ্ধ

1.2.3             1.2.3
^0.0.3 (0.0.3)    0.0.3

লক্ষ্য করুন : প্রধান, ছোটখাট, প্যাচ বা নম্বর ছাড়াই beta উল্লেখ করা, অনুপস্থিত স্তরের জন্য any একই।

লক্ষ্য করুন : যখন আপনি কোনও প্যাকেজ ইনস্টল করেন যার প্রধান স্তর হিসাবে 0 আছে, আপডেট কেবল নতুন বিটা / প্র স্তরের সংস্করণ ইনস্টল করবে! এটি package.json সেট ^ package.json ডিফল্ট হিসাবে এবং যখন ইনস্টল করা সংস্করণ 0.1.3 মত 0.1.3 , এটি সমস্ত বড় / ছোট / প্যাচ স্তরগুলি স্থির করে।


~ ছোটখাট সংস্করণ রিলিজে specfices ^ প্রধান সংস্করণ রিলিজ নির্দিষ্ট করে

উদাহরণস্বরূপ, যদি প্যাকেজ সংস্করণটি 4.5.2 হয় তবে আপডেট 4.5.0 সংস্করণটি 4.5.x সংস্করণটি ইনস্টল করবে (MINOR সংস্করণ) ^ 4.5.2 সর্বশেষ 4.xx সংস্করণ (প্রধান সংস্করণ) ইনস্টল করবে


আপনি সম্ভবত প্যাকেজ.জson এ টিল্ড (~) এবং ক্যারেট (^) দেখেছেন। তাদের মধ্যে পার্থক্য কী?

যখন আপনি npm ইনস্টল মুহূর্ত - save করবেন, তখন এটি caret (^) উপসর্গের সাথে package.json এন্ট্রি সংরক্ষণ করে।

Tilde (~)

সহজ শর্তে, টিল্ড (~) সবচেয়ে সাম্প্রতিক ক্ষুদ্র সংস্করণ (মধ্যম সংখ্যা) সাথে মেলে। ~ 1.2.3 সব 1.2.x সংস্করণ মেলে কিন্তু 1.3.0 মিস্ হবে।

তত্ত্বাবধায়ক (^)

ক্যারেট (^), অন্য দিকে, আরো স্বচ্ছন্দ। এটি আপনাকে সাম্প্রতিকতম প্রধান সংস্করণে (প্রথম সংখ্যা) আপডেট করবে। ^ 1.2.3 1.3.0 সহ কোনও 1.xx রিলিজ মিলবে, তবে 2.0.0 এ বন্ধ হবে।

রেফারেন্স: https://medium.com/@Hardy2151/caret-and-tilde-in-package-json-57f1cbbe347b


সংস্করণ সংখ্যাটি সিনট্যাক্সে রয়েছে যা বিভিন্ন অর্থের সাথে প্রতিটি বিভাগকে নির্দিষ্ট করে। সিনট্যাক্স একটি বিন্দু দ্বারা পৃথক তিনটি ভাগে বিভক্ত করা হয়।

major.minor.patch 1.0.2

মেজর, ছোটখাট এবং প্যাচ একটি প্যাকেজের বিভিন্ন রিলিজ প্রতিনিধিত্ব করে।

npm টিপেল (~) এবং ক্যারেট (^) ব্যবহার করে যা প্যাচ এবং ছোটখাট সংস্করণ যথাক্রমে ব্যবহার করতে পারে।

তাই যদি আপনি ~ 1.0.2 দেখতে পান তবে এটি 1.0.2 সংস্করণ ইনস্টল করতে হবে অথবা সর্বশেষ প্যাচ সংস্করণ 1.0.4। আপনি যদি 1.0.2 দেখতে পান তবে এটি সংস্করণ 1.0.2 ইনস্টল করতে হবে অথবা সর্বশেষ মাইন বা প্যাচ সংস্করণ যেমন 1.1.0 ইনস্টল করতে হবে।


হ্যাট ^0.1.2 "ভাঙা" বলে বিবেচিত হতে পারে কারণ এটি ^0.1.2 থেকে ^0.1.2 আপডেট হবে না। যখন সফটওয়্যারটি উঠছে তখন 0.xy সংস্করণ এবং টুপি 0.xy কেবল শেষ 0.xy অঙ্ক ( y ) মিলবে। এই উদ্দেশ্য উপর করা হয়। এর কারণ হল সফ্টওয়্যারটি দ্রুত বিকশিত হওয়ার সাথে সাথে এপিআই পরিবর্তন হচ্ছে: একদিন আপনার কাছে এই পদ্ধতি রয়েছে এবং অন্যদিন আপনার কাছে সেই পদ্ধতি এবং পুরানোগুলি চলে গেছে। আপনি যদি ইতিমধ্যে আপনার লাইব্রেরি ব্যবহার করে এমন লোকেদের কোডটি ভাঙ্গতে না চান তবে আপনি যান এবং প্রধান সংস্করণ বৃদ্ধি করুন: যেমন 1.0.0 -> 2.0.0 -> 3.0.0 । সুতরাং, আপনার সফ্টওয়্যার অবশেষে 100% সম্পন্ন এবং পূর্ণ-বৈশিষ্ট্যযুক্ত এটি সংস্করণ 11.0.0 মত হবে এবং এটি খুব অর্থপূর্ণ দেখাচ্ছে না এবং আসলে বিভ্রান্তিকর দেখাচ্ছে। যদি আপনি অন্যদিকে 0.1.x -> 0.2.x -> 0.3.x সংস্করণগুলি ব্যবহার করেন তবে সফ্টওয়্যার অবশেষে 100% সম্পন্ন এবং পূর্ণ-বৈশিষ্ট্যযুক্তটি সংস্করণ 1.0.0 হিসাবে প্রকাশ করা হয় এবং এর অর্থ "এই প্রকাশটি দীর্ঘমেয়াদী পরিষেবা এক, আপনি এগিয়ে যেতে এবং আপনার উত্পাদন কোড লাইব্রেরীর এই সংস্করণটি ব্যবহার করতে পারেন এবং লেখক আগামীকাল বা পরবর্তী মাসে সবকিছু পরিবর্তন করবেন না এবং সে প্যাকেজটি পরিত্যাগ করবে না"।

নিয়মটি হল: 0.xy সংস্করণটি ব্যবহার করুন যখন আপনার সফটওয়্যারটি এখনও পরিপক্ক হয় না এবং আপনার পাবলিক API এ পরিবর্তিত হলে এটি মধ্যম সংখ্যার ^0.1.0 সহ ছেড়ে দেয় (তাই লোকেদের ^0.1.0 আপডেট পাবে না এবং এটি ' তাদের কোড বিরতি)। তারপরে, যখন সফ্টওয়্যারটি মিলিত হয়, এটি 1.0.0 অধীনে ছেড়ে দিন এবং আপনার সর্বজনীন API পরিবর্তন করার সময় বামপন্থী সংখ্যা বাড়িয়ে দিন (তাই লোকেদের ^1.0.0 2.0.0 আপডেট পাবে না এবং এটি তাদের কোড ভাঙ্গবে না)।

Given a version number MAJOR.MINOR.PATCH, increment the:

MAJOR version when you make incompatible API changes,
MINOR version when you add functionality in a backwards-compatible manner, and
PATCH version when you make backwards-compatible bug fixes.

~ : যুক্তিসঙ্গতভাবে বন্ধ

   ~1.1.5: 1.1.0 <= accepted < 1.2.0

^ : সাথে সামঞ্জস্যপূর্ণ

   ^1.1.5: 1.1.5 <= accepted < 2.0.0

   ^0.1.3: 0.1.3 <= accepted < 0.2.0

   ^0.0.4: 0.0.4 <= accepted < 0.1.0

~ প্রধান এবং ছোটখাট সংখ্যা সংশোধন করে। যখন আপনি আপনার নির্ভরতাতে বাগ-সংশোধনগুলি গ্রহণ করতে প্রস্তুত হন তখন এটি ব্যবহার করা হয় তবে কোন সম্ভাব্য অসঙ্গতিপূর্ণ পরিবর্তনগুলি চান না।

^ শুধুমাত্র প্রধান সংখ্যা সংশোধন করে। যখন আপনি ঘনিষ্ঠভাবে আপনার নির্ভরতাগুলি দেখছেন তখন এটি ব্যবহার করা হয় এবং ছোটখাট রিলিজ অসঙ্গতিপূর্ণ হলে আপনার কোড দ্রুত পরিবর্তন করতে প্রস্তুত।

এর পাশাপাশি, পুরানো এনপিএম সংস্করণের দ্বারা সমর্থিত নয় , এবং সাবধানতার সাথে ব্যবহার করা উচিত।

সুতরাং, ^ একটি ভাল ডিফল্ট, কিন্তু এটি নিখুঁত নয়। আমি সাবমেরিয়ার অপারেটরটি সাবধানে চয়ন এবং কনফিগার করার পরামর্শ দিই যা আপনার কাছে সবচেয়ে দরকারী।


~ Tilde:

  • ~ প্রধান এবং ছোটখাট সংখ্যা সংশোধন করে
  • যখন আপনি আপনার নির্ভরতাতে বাগ-সংশোধনগুলি গ্রহণ করতে প্রস্তুত হন তখন এটি ব্যবহার করা হয় তবে কোন সম্ভাব্য অসঙ্গতিপূর্ণ পরিবর্তনগুলি চান না।
  • Tilde সাম্প্রতিক সামান্য সংস্করণ (মধ্যম সংখ্যা) সাথে মেলে।
  • ~ 1.2.3 সব 1.2.x সংস্করণ মেলে, কিন্তু এটি 1.3.0 মিস্ হবে।
  • Tilde (~) আপনি বাগ ফিক্স রিলিজ দেয়

^ ক্যারেট:

  • ^ শুধুমাত্র প্রধান সংখ্যা সংশোধন করে।
  • যখন আপনি ঘনিষ্ঠভাবে আপনার নির্ভরতাগুলি দেখছেন তখন এটি ব্যবহার করা হয় এবং ছোটখাট রিলিজ অসঙ্গতিপূর্ণ হলে আপনার কোড দ্রুত পরিবর্তন করতে প্রস্তুত।
  • এটি আপনাকে সাম্প্রতিকতম প্রধান সংস্করণে (প্রথম সংখ্যা) আপডেট করবে।
  • ^ 1.2.3 1.3.0 সহ কোনও 1.xx রিলিজ মিলবে, তবে এটি 2.0.0 এ বন্ধ থাকবে।
  • ক্যারেট (^) আপনাকে পাশাপাশি সামঞ্জস্যপূর্ণ নতুন কার্যকারিতা দেয়।

একটি মাছ ধরার নৌকা ব্যাখ্যা

স্ট্যান্ডার্ড ভার্সনিং সিস্টেম major.minor.build (যেমন 2.4.1)

npm পরীক্ষা করে এবং এই অক্ষরের উপর ভিত্তি করে একটি নির্দিষ্ট প্যাকেজের সংস্করণ সংশোধন করে

~ : প্রধান সংস্করণ সংশোধন করা হয়, ছোটখাট সংস্করণ নির্দিষ্ট করা হয়, কোনো বিল্ড নম্বর মেলে

উদাহরণস্বরূপ: ~ 2.4.1 এর মানে হল এটি 2.4.x এর জন্য চেক করবে যেখানে x কিছু আছে

^ : প্রধান সংস্করণ সংশোধন করা হয়েছে, কোন ছোটখাট সংস্করণ মেলে, কোনও বিল্ড নম্বর মেলে

উদাহরণস্বরূপ: ^ 2.4.1 এর মানে এটি 2.xx এর জন্য চেক করবে যেখানে x কিছু আছে





npm