Package.json හි ටිල්ඩ් (~) සහ කැරට් (^) අතර වෙනස කුමක්ද?


3400

මම නවතම ස්ථාවර දක්වා උසස් පසු nodeහා npm, මම උත්සාහ කළා npm install moment --save. එය package.jsonකැරට් ^උපසර්ගය සමඟ ඇතුලත් කිරීම සුරකිනු ඇත . මීට පෙර, එය ටිල්ඩ් ~උපසර්ගයක් විය.

  1. මෙම වෙනස්කම් සිදු කරන්නේ npmඇයි?
  2. ටිල්ඩ් ~සහ කැරට් අතර වෙනස ^කුමක්ද?
  3. අන් අයට වඩා වාසි මොනවාද?

42
FYI මඟින් ඔබට උපසර්ගයන් වළක්වා ගත හැකිය npm config set save-prefix=''. ( ~ඔබ කැමති නම් මිල ගණන් වල රැඳී සිටින්න.) මම පෞද්ගලිකව මෙය කර නිෂ්පාදනයේ දේවල් සඳහා හැකිලීමි.
fncomp

19
වෙහෙස මහන්සි වී වැඩ කරන ආකාරය හා වෙනස්කම් පිළිබඳ සියලු විස්තර: github.com/npm/node-semver#tilde-ranges-123-12-1
ජෙෆ්රි


commentfncomp ට අවශ්‍ය වූයේ මා ඔබේ අදහස නිවැරදිව ලබා ගත්තාද යන්න පැහැදිලි කර ගැනීමටය .. ඔබ ඔබේ ව්‍යාපෘතියේ පරායත්තතාවයේ නිශ්චිත අනුවාදයන් පමණක් භාවිතා කරනවාද? පරායත්තතා වැඩි දියුණු කිරීමට අපගේ කණ්ඩායම පසුබට වේ .. විශේෂිත අනුවාදයන් හෝ පරායත්තයන් සඳහා '~' උපසර්ගය භාවිතා කිරීමට ඔබ නිර්දේශ කරනවාද ..?
blogs4t

"මම මෙය පෞද්ගලිකව කර නිෂ්පාදනයේ දේවල් සඳහා හැකිලීම" යනුවෙන් පැවසීමෙන් ඔබ අදහස් කරන දේ කරුණාකර විස්තර කළ හැකිද? ස්තූතියි!
blogs4t

Answers:


3863

එන්පීඑම් ලියකියවිලි සහ සෙම්වර් ලියකියවිලි බලන්න :

  • ~ අනුවාදය “අනුවාදයට ආසන්න වශයෙන් සමාන”, සුළු අනුවාදය වැඩි නොකර අනාගත සියලුම පැච් අනුවාදයන් වෙත ඔබව යාවත්කාලීන කරනු ඇත. ~1.2.31.2.3 සිට <1.3.0 දක්වා නිකුතු භාවිතා කරයි.

  • version “අනුවාදය සමඟ අනුකූල වේ”, ප්‍රධාන අනුවාදය වැඩි නොකර අනාගත සියලුම සුළු / පැච් අනුවාදයන් වෙත ඔබව යාවත්කාලීන කරනු ඇත. ^2.3.42.3.4 සිට <3.0.0 දක්වා නිකුත් කිරීම් භාවිතා කරයි.

ව්‍යතිරේකයන් සඳහා පහත දැක්වෙන අදහස් බලන්න, විශේෂයෙන් පෙර-0. අනුවාද සඳහා ^ 0.2.3


327
මෙය එතරම් නොසිතන පුද්ගලයින් අල්ලා ගැනීමට බලාපොරොත්තු වන නමුත් ^ සහ both යන දෙකම ඔබගේ පරායත්තතාවයන්ගෙන් සුළු හා ලක්ෂ්‍ය මුදා හැරීම් විශ්වාස කළ හැකි යැයි උපකල්පනය කරයි. ඔබ පුස්තකාලයක් ප්‍රකාශයට පත් කරන්නේ නම් සහ අනෙක් අය ඔබව විශ්වාස කිරීමට කැමති නම්, ඩවුන්ස්ට්‍රීම් ඩිපෙන්ඩෙන්සස් අනුමත නොකරන්න. ඔබගේ යැපීමෙන් නරක තිතක් මුදා හැරීම ඉහළට දාම ප්‍රතික්‍රියාවක් ඇති කළ හැකි අතර, දේවල් මුතු හැඩයට ගිය විට මිනිසුන් ඔබේ දොරට තට්ටු කරයි. ඔබේ නිෂ්පාදන කේතය මත npm හැකිලීම භාවිතා කිරීමට මෙය තවත් විශාල හේතුවකි.
tehfoo

9
ඔබේ අනුවාදයන් a ^හෝ a සමඟ පෙර සූදානමින් npm හි ඇති සියලුම විකාර ඉවත් කිරීමටද ඔබට හැකිය ~. ඔබේ අනුවාදයන් තදින් පාලනය කිරීමට අවශ්‍ය නම් මෙය සකසන්න: npm config set save-prefix=''
කුමාර්හාර්

5
raprasanthv හරි: docs.npmjs.com/misc/semver#caret-ranges-1-2-3-0-2-5-0-0-4 : කැරට් පරාස ^ 1.2.3 ^ 0.2.5 ^ 0.0 .4. [ප්‍රධාන, සුළු, පැච්] ටුපල් එකේ වම්-වඩාත්ම ශුන්‍ය නොවන ඉලක්කම් වෙනස් නොකරන වෙනස්කම් වලට ඉඩ දෙන්න. වෙනත් වචන වලින් කිවහොත්, මෙය 1.0.0 සහ ඊට ඉහළ අනුවාදයන් සඳහා පැච් සහ සුළු යාවත්කාලීන කිරීම්, 0.X> = 0.1.0 අනුවාද සඳහා පැච් යාවත්කාලීන කිරීම් සහ 0.0.X අනුවාද සඳහා යාවත්කාලීන කිරීම් සඳහා ඉඩ ලබා දේ.
rofrol

16
ඔබ භාවිතා කරන විට සෙම්වර් හි gjgillich 0.2.x, 2a නොවේ major version. Docs.npmjs.com නිශ්චිත වචන භාවිතා කළේ එබැවිනි : the left-most non-zero digit. මෙම නඩුව ගැන කුමක් කිව හැකිද: ^ 0.0.4 යන්නෙන් 0.0.4
රොෆ්‍රෝල්

11
Ag ෆැග්නර්බ්‍රැක්: ඔබ ලබා දුන් නිශ්චිත උදාහරණය නිවැරදි නමුත් සාමාන්‍යයෙන් ඔබේ සිතීමේ ක්‍රමය වැරදිය. උදාහරණයක්: ගේ ඔබ පැකේජයක් තිබෙනවා කියා A3 සංස්කරණවල: 0.0.1, 0.0.2සහ 0.0.3. දෝෂයක් ඇති 0.0.1බැවින් ඔබට අවම වශයෙන් 0.0.2ඔබේ පැකේජයේ තිබිය Bයුතුය. ඔබ ලියන්නේ නම් ඔබට 0.0.xලැබෙනු ඇත 0.0.3, එය හරි. නමුත් සමහර වෙනත් පැකේජයක් නම් Cදෙකම අවශ්ය Bහා Aමීට අමතරව සහ සීමාකිරීමට ඇත "A": "<0.0.2"ඔබ කරන්නම් 0.0.1ඔබට අවශ්ය දේ නො වන ඕනෑම ගැටුමක් ප්රශ්නය, නොපෙන්වා. ටිල්ඩ් භාවිතා ~0.0.2කිරීමෙන් මෙම ගැටළුව මඟහරවා ගත හැකිය.
මැකීජ් එස්

864

නිල npmjs ප්‍රලේඛනය එක් කිරීමට මම කැමැත්තෙමි, එමඟින් අනුවාදයේ නිශ්චිතතාව සඳහා වන සියලු ක්‍රම විස්තර කර ඇත.

https://docs.npmjs.com/files/package.json

https://docs.npmjs.com/misc/semver#x-ranges-12x-1x-12-

  • ~version"අනුවාදයට ආසන්න වශයෙන් සමානයි" npm semver බලන්න - ටිල්ඩ් රේන්ජ් සහ සෙම්වර් (7)
  • ^version"අනුවාදය සමඟ අනුකූල වේ" npm semver බලන්න - Caret Ranges & semver (7)
  • version අනුවාදය හරියටම ගැලපිය යුතුය
  • >version අනුවාදයට වඩා විශාල විය යුතුය
  • >=version යනාදිය
  • <version
  • <=version
  • 1.2.x 1.2.0, 1.2.1, ආදිය, නමුත් 1.3.0 නොවේ
  • http://sometarballurl (මෙය තාර බෝලයක URL විය හැකි අතර එය දේශීයව බාගත කර ස්ථාපනය කරනු ඇත
  • * ඕනෑම අනුවාදයකට ගැලපේ
  • latest නවතම නිකුතුව ලබා ගනී

ඉහත ලැයිස්තුව පරිපූර්ණ නොවේ. අනෙකුත් අනුවාද පිරිවිතරයන්ට GitHub url සහ GitHub පරිශීලක repo, දේශීය මාර්ග සහ විශේෂිත npm ටැග් සහිත පැකේජ ඇතුළත් වේ


8
එය ද හැකි අනුවාද වැනි හා සමපාත වන පරාසයක විශේෂණය කළ හැක 1.2.0 || >=1.2.2 <1.3.0හරියටම 1.2.0, හෝ 1.2.2 සිට 1.3.0 දක්වා හැම දෙයක්ම (ද ඇතුළත්ව) ද නැත 1.1, නමුත් 1.2.1, හෝ 1.3.1 සහ ඉහත, සහ: .x සහ පහළ.
CodeManX

වඩාත් නිශ්චිත සබැඳියක් ඉහත -> docs.npmjs.com/files/package.json#dependencies
ටෝබි

"Approximately equivalent to version"සහ "Compatible with version"~ සහ ^ හැසිරීම විස්තර කිරීමට එවැනි කලකිරවන නිශ්චිත නොවන ක්‍රම වේ. සත්‍ය පිළිතුරක් ලබා දීම ගැන ස්තූතියි @jgillich!
ස්කොට් ස්ටැෆර්ඩ්

641

npm නිශ්චිතව දක්වා ඇති පැකේජයේ නවතම අනුවාදය ස්ථාපනය කිරීමට ඉඩ දෙයි. ටිල්ඩ් ( ~) භාවිතා කිරීමෙන් ඔබට දෝෂ නිරාකරණ මුදා හැරීම් ලබා දෙන අතර කැරට් ( ^) මඟින් ඔබට පසුපසට අනුකූල නව ක්‍රියාකාරීත්වයක් ලබා දෙයි.

ගැටළුව වන්නේ පැරණි අනුවාද වල සාමාන්‍යයෙන් එතරම් දෝෂ නිරාකරණය නොලැබීමයි, එබැවින් npm ^පෙරනිමිය ලෙස caret ( ) භාවිතා කරයි --save.

semver table

අනුව: "සෙම්වර් පැහැදිලි කළේය - මගේ පැකේජයේ කර්සන් (^) ඇත්තේ ඇයි?" .

1.0.0 ට වැඩි අනුවාද සඳහා නීති අදාළ වන අතර සෑම ව්‍යාපෘතියක්ම අර්ථකථන අනුවාදයන් අනුගමනය නොකරන බව සලකන්න . 0.xx අනුවාද සඳහා කරත්තය මඟින් පැච් යාවත්කාලීන කිරීම් පමණක් ඉඩ දෙයි , එනම් එය ටයිල්ඩයට සමාන ලෙස ක්‍රියා කරයි. "කැරට් පරාස" බලන්න

සංකල්ප පිළිබඳ දෘශ්‍ය පැහැදිලි කිරීමක් මෙන්න:

semver රූප සටහන

මූලාශ්‍රය: "අර්ථකථන අනුවාද චෙට්ෂීට්" .


2
ඩොලර් 0.2.5 ගැන කුමක් කිව හැකිද? සිට docs.npmjs.com/misc/semver#caret-ranges-1-2-3-0-2-5-0-0-4 : බැධී හෙල්වැටි ^ 1.2.3 ^ 0.2.5 ^ 0.0.4. [ප්‍රධාන, සුළු, පැච්] ටුපල් එකේ වම්-වඩාත්ම ශුන්‍ය නොවන ඉලක්කම් වෙනස් නොකරන වෙනස්කම් වලට ඉඩ දෙන්න. වෙනත් වචන වලින් කිවහොත්, මෙය 1.0.0 සහ ඊට ඉහළ අනුවාදයන් සඳහා පැච් සහ සුළු යාවත්කාලීන කිරීම්, 0.X> = 0.1.0 අනුවාද සඳහා පැච් යාවත්කාලීන කිරීම් සහ 0.0.X අනුවාද සඳහා යාවත්කාලීන කිරීම් සඳහා ඉඩ ලබා දේ.
rofrol

11
1.0.0 ට පෙර ඕනෑම අනුවාදයක් අස්ථායී යැයි සලකන අතර මෙම නීති අදාළ නොවේ
pspi

2
එබැවින් ඔබේ පැහැදිලි කිරීම සම්පූර්ණ නැත
rofrol

5
@rofrol ඔව්, කියවීමේ හැකියාව අතහැර දැමීම සමහර විට හොඳයි, json පැකේජය මත යැපීම සඳහා 1.0.0 ට වඩා අඩු යමක් තිබීමේ සම්භාවිතාව ඉතා අඩුය. 20/80 මූලධර්මයද බලන්න, වැදගත් දේ කෙරෙහි අවධානය යොමු කිරීම සඳහා හොඳ රීතියකි
pspi

1
ppspi 1.0.0 ට වඩා අඩු අනුවාදයන් තිබීම “කළ නොහැක්කක්” ද? 60 න් අපට ඩොලර් 15 ක් ලැබී ඇති අතර ඒවායින් බොහොමයක් අපැහැදිලි නොවේ.
ඩේව් නිව්ටන්

99

සෙම්වර්

<major>.<minor>.<patch>-beta.<beta> == 1.2.3-beta.2

වෙනස්කම් වලට ඉඩ දෙන්න හෝ තහනම් කරන්න

  • පින් අනුවාදය: 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
    • උපසිරැසි නියම නොකර ඔබට ආරම්භක ප්‍රධාන අනුවාදය සැකසිය හැකිය.

සියලු (බලාපොරොත්තු සහිත) හැකියාවන්

ප්‍රධාන මට්ටමේ ආරම්භක සැකසුම් සකස් කර යාවත්කාලීන කිරීම් ඉහළට ඉඩ දෙන්න

*  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ප්‍රධාන මට්ටමේ පැකේජයක් ස්ථාපනය කරන විට , යාවත්කාලීනය මඟින් ස්ථාපනය කරනු ලබන්නේ නව බීටා / පීආර් මට්ටමේ අනුවාදයක් පමණි! එයට හේතුව පෙරනිමියෙන් npmසකසා ^ඇති package.jsonඅතර ස්ථාපනය කරන ලද අනුවාදය සමාන වන විට 0.1.3, එය සියලු ප්‍රධාන / සුළු / පැච් මට්ටම් කැටි කරයි.


පුස්තකාලය සහ පරිභෝජනය කරන සංවර්ධකයින්ට පද්ධතිය නොතේරෙන හෙයින් 0 සිට ව්‍යාපෘති ආරම්භ කිරීමෙන් වළකින්නැයි ජනතාවට පැවසීම භයානක විසඳුමකි. මම හිතන්නේ @asdfasdfads ට වඩා හොඳ තොරතුරු තිබේ.
ProLoser

RoProLoser මම හිතන්නේ පද්ධතිය සරල කළ යුතු අතර අපි 0.x අනුවාද භාවිතා නොකළ යුතුයි.
rofrol

1
මුල් ජීවන චක්‍ර සංවර්ධනය හා v0 වටා භාවිතා කිරීමේ අවස්ථාව බොහෝ අර්ථවත් කරයි. V0 නිසියාකාරව හැසිරෙන ආකාරය ඉගෙන ගැනීමෙන් ඇත්ත වශයෙන්ම මා වෙනත් මුල් කාලීන ජීවන චක්‍ර ව්‍යාපෘති දෙස බලා සිටිමි. එයින් අදහස් වන්නේ ඔබේ ව්‍යාපෘතිය සැබවින්ම නොමැති විට 1.x (aka: ස්ථාවර) ලෙස ප්‍රකාශ කිරීමට බල නොකරමින් ඔබට පසුගාමී නොගැලපීම් සහිත වේගයෙන් වෙනස් වන API එකක් තිබිය හැකි බවයි.
ProLoser

මට එය වැටහී ඇත, නමුත් එය සෙම්වර් සහ සුදුසුකම් සමඟ ක්‍රියා කරන්නේ කෙසේදැයි මම කැමති නැත
rofrol

2
එය මතයක් ලෙස හැඟෙන අතර එය සාමාන්‍යයෙන් පිළිගත් ප්‍රවේශයක් ලෙස රාමු නොකළ යුතුය. ^ 0.1.x පැච් හොඳින් ගැලපේ.
ProLoser

93

~ප්‍රධාන හා සුළු සංඛ්‍යා නිවැරදි කරයි. ඔබගේ පරායත්තතාවයේ දෝෂ නිවැරදි කිරීම් පිළිගැනීමට ඔබ සූදානම් වන විට එය භාවිතා කරයි, නමුත් නොගැලපෙන වෙනස්කම් අවශ්‍ය නොවේ.

^ප්‍රධාන අංකය පමණක් නිවැරදි කරයි. ඔබගේ පරායත්තතාවයන් ඔබ සමීපව නිරීක්ෂණය කරන විට එය භාවිතා වන අතර සුළු නිකුතුවකට නොගැලපේ නම් ඔබේ කේතය ඉක්මනින් වෙනස් කිරීමට සූදානම්ය.

ඊට අමතරව, ^ඇත සහය නොදක්වයි පැරණි npm වෙළුම් හා පරෙස්සමින් භාවිත කළ යුතු ය.

ඉතින්, ^හොඳ පෙරනිමියකි, නමුත් එය පරිපූර්ණ නොවේ. ඔබට වඩාත් ප්‍රයෝජනවත් වන සෙම්වර් ක්‍රියාකරු ප්‍රවේශමෙන් තෝරාගෙන වින්‍යාස කිරීමට මම යෝජනා කරමි.


13
සත්‍ය නොවේ: කැරට් පරාස ^ 1.2.3 ^ 0.2.5 ^ 0.0.4. [ප්‍රධාන, සුළු, පැච්] ටුපල් එකේ වම්-වඩාත්ම ශුන්‍ය නොවන ඉලක්කම් වෙනස් නොකරන වෙනස්කම් වලට ඉඩ දෙන්න. වෙනත් වචන වලින් කිවහොත්, මෙය 1.0.0 සහ ඊට ඉහළ අනුවාදයන් සඳහා පැච් සහ සුළු යාවත්කාලීන කිරීම්, 0.X> = 0.1.0 අනුවාද සඳහා පැච් යාවත්කාලීන කිරීම් සහ 0.0.X අනුවාද සඳහා යාවත්කාලීන කිරීම් සඳහා ඉඩ ලබා දේ. docs.npmjs.com/misc/semver#caret-ranges-1-2-3-0-2-5-0-0-4
rofrol

6
මෙම පිළිතුර සම්පූර්ණයෙන්ම වැරදියි (මෙහි වෙනත් බොහෝ අය මෙන්). මේ කිසිවක් කිසි විටෙකත් ප්‍රධාන සංඛ්‍යාවක් සවි නොකරයි! @Rfrol පැවසූ පරිදි, ^ හුදෙක් වමේ බොහෝ ශුන්‍ය නොවන ඉලක්කම් නොවෙනස්ව තබා ගනී. version අනෙක් අතට සුළු අනුවාදය නියම කර ඇත්නම් (උදා: ~ 1.2.3 හෝ ~ 1.2) පැච් යාවත්කාලීනයන් සඳහා පමණක් ඉඩ ලබා දෙන අතර සුළු අනුවාදය නිශ්චිතව දක්වා නොමැති නම් සුළු යාවත්කාලීන කිරීම් වලට ඉඩ දෙයි (උදා: ~ 1).
TheBaj

2
BTheBaj ඔවුන් අදහස් කරන්නේ "සකස් කරන්න" යන්නට වඩා "අර්ථ දක්වන්න" ("නිවැරදි කරන්න"), එබැවින් ප්‍රධාන අංකය හසුරුවන ආකාරය පිළිබඳව ඔබ සැවොම එකඟ වේ.
maaartinus

1
ඔව්, පිළිතුරු දුන් තැනැත්තා "ස්ථාවර, ස්ථාවර හෝ වෙනස් නොවන ලෙස සකස් කිරීම" ලෙස "නිවැරදි කරන්න" යන්න තේරුම් ගන්නා තෙක් මෙම පිළිතුර මුළුමනින්ම පසුපසට පෙනුණි.
NattyC

57

~: සාමාන්යයෙන් කෙනෙකු සමීප කිරීමට

   ~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

17
@kytwb - නැත. ශුන්‍ය-මුදා හැරීමේ අනුවාද අංකවල විශේෂ අවස්ථාවෙහිදී, කැරට් ටයිල්ඩයට සමාන වේ. මේ අනුව ^0.1.3අනුවාදයන් පමණක් පිළිගන්නා අතර එය සුළු වර්ධකයක් වුවද 0.1.xපිළිගන්නේ නැත 0.2.0. මෙම හැසිරීම සමාන වේ ~0.1.3. මෙම හැසිරීම පිටුපස ඇති හේතුව වන්නේ ශුන්‍ය මුදා හැරීමේ පැකේජ තවමත් අස්ථායි ලෙස සැලකීමයි; semver.org , # 4 හි වචන වලින් , "ඕනෑම දෙයක් ඕනෑම වේලාවක වෙනස් විය හැකිය" (පසුපසට-නොගැලපෙන වෙනස්කම් ඇතුළුව).
චාර්වි

31

^යනු 1. [ඕනෑම]. [ඕනෑම] (නවතම සුළු අනුවාදය)
~1.2 වේ. [ඕනෑම] (නවතම පැච්)

මෙම බ්ලොග් සටහන ඉතා හොඳ කියවීමකි, සෙම්වර් එන්පීඑම් වෙත අදාළ වන්නේ කෙසේද
සහ එය සෙම්වර් ප්‍රමිතියට ගැලපෙන පරිදි ඔවුන් කරන්නේ කුමක්ද යන්න
http://blog.npmjs.org/post/98131109725/npm-2-0-0


2
සත්‍ය නොවේ: කැරට් පරාස ^ 1.2.3 ^ 0.2.5 ^ 0.0.4. [ප්‍රධාන, සුළු, පැච්] ටුපල් එකේ වම්-වඩාත්ම ශුන්‍ය නොවන ඉලක්කම් වෙනස් නොකරන වෙනස්කම් වලට ඉඩ දෙන්න. වෙනත් වචන වලින් කිවහොත්, මෙය 1.0.0 සහ ඊට ඉහළ අනුවාදයන් සඳහා පැච් සහ සුළු යාවත්කාලීන කිරීම්, 0.X> = 0.1.0 අනුවාද සඳහා පැච් යාවත්කාලීන කිරීම් සහ 0.0.X අනුවාද සඳහා යාවත්කාලීන කිරීම් සඳහා ඉඩ ලබා දේ. docs.npmjs.com/misc/semver#caret-ranges-1-2-3-0-2-5-0-0-4
rofrol

28

තොප්පි ගැලපීම යාවත්කාලීන ^0.1.2නොවන නිසා එය "බිඳුණු" ලෙස සැලකිය හැකිය 0.2.0. මෘදුකාංගය ඉස්මතු වන විට භාවිත 0.x.yඅනුවාදයන් සහ තොප්පි ගැලපීම ගැලපෙන්නේ අවසාන වෙනස්වන අංකයට ( 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.x.yඔබේ මෘදුකාංගය තවමත් පරිණත නොවූ විට අනුවාදකරණය භාවිතා කර ඔබේ පොදු API වෙනස් වන විට මධ්‍යම ඉලක්කම් වැඩි කිරීමෙන් එය මුදා හරින්න (එබැවින් පුද්ගලයන්ට යාවත්කාලීනයන් ^0.1.0නොලැබෙන 0.2.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.

මෙම ප්‍රකාශය හාස්‍යජනක ලෙස ප්‍රයෝජනවත් වූ අතර එය ඉතා හොඳින් ලේඛනගත වී ඇති බවක් නොපෙනේ. මෙම හැසිරීම වටා ඇති ලියකියවිලි සඳහා ඔබට සබැඳියක් තිබේද? V0 ව්යාපෘති පිළිබඳ මෙම පිළිතුර මට බොහෝ උපකාර කර ඇත.
ProLoser

මට සබැඳියක් නොමැත: එන්පීඑම්
කැටම්පෙටමින්

2
වඩාත් විධිමත් ආකාරයකින් ඔවුන්ගේ ලියකියවිලි වලට එකතු කළ යුතුය. මම සෝනි හි කථාවක් මගේ ඉංජිනේරු කණ්ඩායමට ලබා දුන්නේ එය පහසුවෙන් නොසලකා හැරිය හැකි බැවිනි. slides.com/proloser/semver-v0
ProLoser

24

Ild ටිල්ඩ්:

  • ~ කැටි කරයි ප්‍රධාන හා සුළු සංඛ්‍යා කරයි.
  • ඔබගේ පරායත්තතාවයේ දෝෂ නිවැරදි කිරීම් පිළිගැනීමට ඔබ සූදානම් වන විට එය භාවිතා කරයි, නමුත් නොගැලපෙන වෙනස්කම් අවශ්‍ය නොවේ.
  • ටිල්ඩේ නවතම සුළු අනුවාදයට (මැද අංකය) ගැලපේ .
  • ~ 1.2.3 සියළුම 1.2.x අනුවාදයන්ට ගැලපේ, නමුත් එය 1.3.0 මග හැරෙනු ඇත.
  • ටිල්ඩ් (~) ඔබට දෝෂ නිරාකරණ නිකුත් කරයි

^ කැරට්:

  • ^ ප්‍රධාන අංකය පමණක් කැටි කරයි.
  • ඔබගේ පරායත්තතාවයන් ඔබ සමීපව නිරීක්ෂණය කරන විට එය භාවිතා වන අතර සුළු නිකුතුවකට නොගැලපේ නම් ඔබේ කේතය ඉක්මනින් වෙනස් කිරීමට සූදානම්ය.
  • එය ඔබව නවතම ප්‍රධාන අනුවාදයට (පළමු අංකය) යාවත්කාලීන කරනු ඇත .
  • 3 1.2.3 1.3.0 ද ඇතුළුව ඕනෑම 1.xx නිකුතුවකට ගැලපෙනු ඇත, නමුත් එය 2.0.0 හි රැඳෙනු ඇත.
  • කැරට් (^) ඔබට පසුපසට අනුකූල නව ක්‍රියාකාරිත්වයක් ලබා දෙයි.

1
ටිල්ඩේ නවතම පැච් අනුවාදයට (අවසාන අංකය) ගැලපේ. කරත්තය නවතම සුළු අනුවාදයට (මැද අංකය) ගැලපේ.
අබ්දුල් රාවුෆ්

"කැටි කිරීම" හොඳම පැහැදිලි කිරීම වේ.
mhrabiee

කැරට් දෙකම ප්‍රධාන අංකය කැටි කරන අතර ඔබව නවතම ප්‍රධාන අනුවාදයට (පළමු අංකය) යාවත්කාලීන කරයිද? ප්‍රධාන අංකය පළමු අංකය බැවින් මෙය තේරුමක් නැත.
NattyC

19

ටිල්ඩ් ~ සුළු අනුවාදයට ගැලපේ, ඔබ 1.4.2 ඇති පැකේජයක් ස්ථාපනය කර ඇත්නම් සහ ඔබේ ස්ථාපනයෙන් පසු 1.4.3 සහ 1.4.4 අනුවාදයන් ද ඔබේ පැකේජයේ තිබේ නම් ලබා ගත හැකිය. Json එය ~ 1.4.2 ලෙස භාවිතා කර npm ස්ථාපනය කරන්න යාවත්කාලීන කිරීමෙන් පසු ඔබේ ව්‍යාපෘතියේ 1.4.4 ස්ථාපනය වනු ඇත. නමුත් එම පැකේජය සඳහා 1.5.0 ලබා ගත හැකි අතර එය by විසින් ස්ථාපනය නොකරනු ඇත. එය සුළු අනුවාදය ලෙස හැඳින්වේ.

කැරට් major ප්‍රධාන අනුවාදයට ගැලපේ, ඔබේ ව්‍යාපෘතියේ 1.4.2 පැකේජය ස්ථාපනය කර ඇති අතර ඔබේ ස්ථාපනය 1.5.0 මුදා හැරීමෙන් පසුව major ප්‍රධාන අනුවාදය ස්ථාපනය කරනු ඇත. ඔබට ^ 1.4.2 තිබේ නම් එය 2.1.0 ස්ථාපනය කිරීමට ඉඩ නොදේ .

ස්ථාවර අනුවාදය ඔබට එක් එක් ස්ථාපනයෙහි පැකේජයේ අනුවාදය වෙනස් කිරීමට අවශ්‍ය නැතිනම් ස්ථාවර අනුවාදයක් භාවිතා කර විශේෂ අක්‍ෂරයකින් තොරව උදා: "1.4.2"

නවතම අනුවාදය * ඔබට නවතම අනුවාදය ස්ථාපනය කිරීමට අවශ්‍ය නම් පැකේජයේ නම ඉදිරියේ * පමණක් භාවිතා කරන්න.


3
මෙම පිළිතුර නොමඟ යවන සුළුය. සෙම්වර් පැහැදිලිව පවසන පරිදි, සාමාන්‍ය අනුවාද අංකයක් XYZ ස්වරූපය ගත යුතුය [මෙහි] X ප්‍රධාන අනුවාදය වන අතර Y යනු සුළු අනුවාදය වන අතර Z යනු පැච් අනුවාදය වේ.
ලියෝ

15

එක් ලයිනර් පැහැදිලි කිරීමක්

සම්මත අනුවාද පද්ධතිය major.minor.build (උදා. 2.4.1)

npm මෙම අක්ෂර මත පදනම්ව විශේෂිත පැකේජයක අනුවාදය පරීක්ෂා කර නිවැරදි කරයි

~ : ප්‍රධාන අනුවාදය ස්ථාවරයි, සුළු අනුවාදය ස්ථාවරයි, ඕනෑම ගොඩනැගීමේ අංකයකට ගැලපේ

උදා: ~ 2.4.1 යන්නෙන් අදහස් වන්නේ x යනු ඕනෑම දෙයක් ඇති 2.4.x සඳහා පරික්ෂා කිරීමයි

^ : ප්‍රධාන අනුවාදය ස්ථාවරයි, ඕනෑම සුළු අනුවාදයකට ගැලපේ, ඕනෑම ගොඩනැගීමේ අංකයකට ගැලපේ

උදා: ^ 2.4.1 යන්නෙන් අදහස් වන්නේ x යනු ඕනෑම දෙයක් ඇති 2.xx සඳහා පරික්ෂා කිරීමයි


5
මෙම පිළිතුරේ පේළි 7 ක් මට පෙනේ
FluxLemur

11

පැකේජයේ ටිල්ඩ් (~) සහ කැරට් (^) ඔබ දැක ඇති. ඔවුන් අතර ඇති වෙනස කුමක්ද?

ඔබ npm ස්ථාපනය කිරීමේ මොහොත - සුරකින්න විට, එය පැකේජයේ ඇතුළත් කිරීම සුරකිනු ඇත.

ටිල්ඩ් (~)

සරලම වචන වලින් කිවහොත්, ටිල්ඩ් (~) නවතම සුළු අනුවාදයට (මැද අංකය) ගැලපේ. 2 1.2.3 සියළුම 1.2.x අනුවාදයන්ට ගැලපෙන නමුත් 1.3.0 මග හැරෙනු ඇත.

කරත්තය (^)

කැරට් (^), අනෙක් අතට, වඩාත් ලිහිල් වේ. එය ඔබව නවතම ප්‍රධාන අනුවාදයට (පළමු අංකය) යාවත්කාලීන කරනු ඇත. .

යොමුව: https://medium.com/@Hardy2151/caret-and-tilde-in-package-json-57f1cbbe347b


නැවතත්, මෙම පිළිතුර නොමඟ යවන සුළුය. සෙම්වර් පැහැදිලිව පවසන පරිදි, සාමාන්‍ය අනුවාද අංකයක් XYZ ස්වරූපය ගත යුතුය [මෙහි] X ප්‍රධාන අනුවාදය වන අතර Y යනු සුළු අනුවාදය වන අතර Z යනු පැච් අනුවාදය වේ.
ලියෝ

5

සෙම්වර් තිත් වලින් කැඩී ඇති ප්‍රධාන කොටස් 3 කට වෙන් කර ඇත.

major.minor.patch
1.0.0

මෙම විවිධ ප්‍රධාන, සුළු හා පැච් විවිධ නිකුතු හඳුනා ගැනීමට භාවිතා කරයි. පැකේජ අනුවාදකරණයේදී භාවිතා කළ යුතු සුළු හා පැච් අනුවාද හඳුනා ගැනීමට උදම් (~) සහ කැරට් (^) භාවිතා කරයි.

~1.0.1
 Install 1.0.1 or **latest patch versions** such as 1.0.2 ,1.0.5
^1.0.1
 Install 1.0.1 or **latest patch and minor versions** such as 1.0.2 ,1.1.0 ,1.1.1

4

ටිල්ඩ් (~)

ප්‍රධාන අනුවාදය ස්ථාවරයි, සුළු අනුවාදය ස්ථාවරයි, ඕනෑම ගොඩනැගීමේ අංකයකට ගැලපේ

"express": "~4.13.3" 

~4.13.3 එයින් අදහස් වන්නේ x යනු ඕනෑම දෙයක් ඇති 4.13.x සහ 4.14.0 සඳහා පරීක්ෂා කරන බවයි

කැරට් (^)

ප්‍රධාන අනුවාදය ස්ථාවරයි, ඕනෑම සුළු අනුවාදයකට ගැලපේ, ඕනෑම ගොඩනැගීමේ අංකයකට ගැලපේ

"supertest": "^3.0.0"

^3.0.0 එයින් අදහස් වන්නේ x යනු ඕනෑම දෙයක් ඇති 3.xx සඳහා පරික්ෂා කරන බවයි


මීට වසර 4 කට පෙර පළ කරන ලද පිළිතුරට වඩා මෙම පිළිතුර වෙනස් වන්නේ කෙසේද යන්න ඔබට විස්තර කළ හැකිද ?
ෆ්‍රැන්ක්ලින් යූ

2

අනුවාද අංකය සින්ටැක්ස් තුළ ඇති අතර එමඟින් එක් එක් කොටස විවිධ අර්ථයන්ගෙන් නියම කරයි. සින්ටැක්ස් තිතකින් කොටස් තුනකට බෙදා ඇත.

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 වැනි නවතම සුළු හෝ පැච් අනුවාදය ස්ථාපනය කිරීමයි.


1
මීට වසර 4 කට පෙර පළ කරන ලද පිළිතුරට වඩා මෙම පිළිතුර වෙනස් වන්නේ කෙසේද යන්න ඔබට විස්තර කළ හැකිද ?
ෆ්‍රැන්ක්ලින් යූ

2

කැරට් ^ එකම ප්‍රධාන පරාසයක විශේෂිත අනුවාදයකට වඩා විශාල සියල්ල ඇතුළත් වේ.

tilde ~ එකම සුළු පරාසයක විශේෂිත අනුවාදයකට වඩා විශාල සියල්ල ඇතුළත් කරන්න.

උදාහරණයක් ලෙස, පිළිගත හැකි අනුවාදය 1.0.4 දක්වා සඳහන් කිරීමට, පහත සඳහන් වාක්‍ය ඛණ්ඩය භාවිතා කරන්න:

  • පැච් නිකුත් කිරීම්: 1.0 හෝ 1.0.x හෝ ~ 1.0.4
  • සුළු නිකුතු: 1 හෝ 1.x හෝ ^ 1.0.4
  • ප්‍රධාන නිකුතු: * හෝ x

අර්ථකථන අනුවාද සින්ටැක්ස් පිළිබඳ වැඩි විස්තර සඳහා, npm semver කැල්කියුලේටරය බලන්න .

ප්‍රකාශිත පැකේජවල npm අර්ථකථන අනුවාදයන්§

අර්ථකථන අනුවාදය ගැන npm ප්‍රලේඛනයෙන් වැඩි විස්තර


1

පිළිතුරක් නොව, නොසලකා හැර ඇති බවක් පෙනෙන නිරීක්ෂණයක්.

කැරට් පරාස සඳහා විස්තරය:

බලන්න: https://github.com/npm/node-semver#caret-ranges-123-025-004

[ප්‍රධාන, සුළු, පැච්] ටුපල් එකේ වම්-වඩාත්ම ශුන්‍ය නොවන ඉලක්කම් වෙනස් නොකරන වෙනස්කම් වලට ඉඩ දෙන්න.

^10.2.3ගැලපෙන ක්‍රම10.2.3 <= v < 20.0.0

මම හිතන්නේ නැහැ ඔවුන් අදහස් කළේ එයයි. 11.xx සිට 19.xx දක්වා අනුවාදයන් අදින්න ඔබේ කේතය බිඳ දමයි.

මම හිතන්නේ ඒවා අදහස් left most non-zero number fieldකළා. අංක-ක්ෂේත්‍ර තනි ඉලක්කම් විය යුතු කිසිවක් SemVer හි නොමැත.


0

version සුළු අනුවාද නිකුතු සඳහා පිරිවිතර major ප්‍රධාන අනුවාද නිකුතු සඳහා නියම කරයි

උදාහරණයක් ලෙස පැකේජ අනුවාදය 4.5.2 නම්, යාවත්කාලීනය ~ 4.5.2 නවතම 4.5.x අනුවාදය ස්ථාපනය කරයි (MINOR VERSION) ^ 4.5.2 නවතම 4.xx අනුවාදය ස්ථාපනය කරයි (MAJOR VERSION)


8
මීට වසර 4 කට පෙර පළ කරන ලද පිළිතුරට වඩා මෙම පිළිතුර වෙනස් වන්නේ කෙසේද යන්න ඔබට විස්තර කළ හැකිද ?
ෆ්‍රැන්ක්ලින් යූ

0

මෙම ප්‍රශ්නයට අදාළව ඔබට සංස්කරණ පිළිබඳ රචනා ලේඛන සමාලෝචනය කළ හැකිය , නමුත් මෙහි කෙටියෙන්:

  • ටිල්ඩ් අනුවාද පරාසය ( ~ ) - ~ 1.2.3> = = 1.2.3 < 1.3.0 ට සමාන වේ
  • කැරට් අනුවාද පරාසය ( ^ ) - ~ 1.2.3> = = 1.2.3 < 2.0.0 ට සමාන වේ

එබැවින්, ටිල්ඩ් සමඟ ඔබට පැච් ස්වයංක්‍රීයව යාවත්කාලීන වන නමුත් සුළු හා ප්‍රධාන අනුවාද යාවත්කාලීන නොවනු ඇත. කෙසේ වෙතත්, ඔබ කැරට් භාවිතා කරන්නේ නම් ඔබට පැච් සහ සුළු අනුවාද ලැබෙනු ඇත, නමුත් ඔබට ප්‍රධාන (බිඳෙන වෙනස්කම්) අනුවාදයන් නොලැබෙනු ඇත.

ටිල්ඩ් අනුවාදය "ආරක්ෂිත" ප්‍රවේශයක් ලෙස සලකනු ලැබේ, නමුත් ඔබ විශ්වාසදායක පරායත්තතා (හොඳින් නඩත්තු කරන ලද පුස්තකාල) භාවිතා කරන්නේ නම් ඔබට කැරට් අනුවාදය සමඟ කිසිදු ගැටළුවක් ඇති නොවිය යුතුය (මන්ද සුළු වෙනස්කම් වෙනස් නොවිය යුතුය.

ඔබ බොහෝ විට නිර්මාපක ස්ථාපනය සහ රචනා යාවත්කාලීන කිරීම අතර ඇති වෙනස්කම් ගැන මෙම ස්ටක් ඕවර් ප්‍රවාහ සටහන සමාලෝචනය කළ යුතුය .

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.