bower
සහ අතර ඇති මූලික වෙනස npm
කුමක්ද? සරල හා සරල දෙයක් අවශ්යයි. මම මගේ සගයන් භාවිතා සමහර දැකලා තියෙනවා bower
සහ npm
හුවමාරු කර ගැනීමක් ඔවුන්ගේ ව්යාපෘති.
bower
සහ අතර ඇති මූලික වෙනස npm
කුමක්ද? සරල හා සරල දෙයක් අවශ්යයි. මම මගේ සගයන් භාවිතා සමහර දැකලා තියෙනවා bower
සහ npm
හුවමාරු කර ගැනීමක් ඔවුන්ගේ ව්යාපෘති.
Answers:
සියලුම පැකේජ කළමණාකරුවන්ට බොහෝ අවාසි ඇත. ඔබට ජීවත් විය හැකි දේ තෝරා ගත යුතුය.
npm node.js මොඩියුල කළමනාකරණය කිරීම ආරම්භ කළේය (පැකේජ node_modules
පෙරනිමියෙන් යන්නේ එබැවිනි ), නමුත් බ්රව්සරයිෆයි හෝ වෙබ් පැක් සමඟ සංයුක්ත වන විට එය ඉදිරිපස කෙළවරටද ක්රියා කරයි.
බෝවර් තනිකරම ඉදිරිපස කෙළවර සඳහා නිර්මාණය කර ඇති අතර එය මනසේ තබාගෙන ප්රශස්තිකරණය කර ඇත.
පොදු අරමුණු ජාවාස්ක්රිප්ට් ( country-data
රටේ තොරතුරු sorts
සඳහා හෝ ඉදිරිපස කෙළවරේ හෝ පසුපස කෙළවරේ භාවිතා කළ හැකි කාර්යයන් වර්ග කිරීම වැනි) ඇතුළුව npm බොවර්ට වඩා විශාලය .
බෝවර් සතුව වඩා කුඩා පැකේජ ප්රමාණයක් ඇත.
බෝවර්ට මෝස්තර ආදිය ඇතුළත් වේ.
npm ජාවාස්ක්රිප්ට් වෙත යොමු වී ඇත. විලාස එක්කෝ, ෙවන් ෙවන් වශෙයන් බාගත හෝ වගේ දෙයක් අවශ්ය වූ npm-sass
හෝ sass-npm
.
ලොකුම වෙනස නම් npm කැදැලි පරායත්තතාවයන් සිදු කරයි (නමුත් පෙරනිමියෙන් සමතලා වේ) සහ බෝවර්ට පැතලි පරායත්තතා ගසක් අවශ්ය වේ (පරායත්ත විභේදනයේ බර පරිශීලකයා මත පැටවේ) .
කැදැලි පරායත්ත ගසක් යනු ඔබේ යැපීම් වලට ඔවුන්ගේම පරායත්තයන් තිබිය හැකි අතර ඒවාටම ආවේණික විය හැකිය. මොඩියුල දෙකකට එකම පරායත්තතාවයේ විවිධ අනුවාදයන් අවශ්ය වන අතර තවමත් ක්රියා කරයි. Npm v3 සිට සටහන, පරායත්ත ගස පෙරනිමියෙන් පැතලි වනු ඇත (ඉඩ ඉතිරි කිරීම) සහ අවශ්ය අවස්ථාවන්හිදී පමණක් කූඩුව, උදා: පරායත්තතා දෙකකට ඔවුන්ගේම අන්ඩර්ස්කෝර් අනුවාදය අවශ්ය නම්.
සමහර ව්යාපෘති දෙකම භාවිතා කරන්නේ ඔවුන් ඉදිරිපස පැකේජ සඳහා බෝවර් සහ යෙමන්, ග්රන්ට්, ගල්ප්, ජේඑස්හින්ට්, කෝපි ස්ක්රිප්ට් වැනි සංවර්ධක මෙවලම් සඳහා එන්පීඑම් භාවිතා කිරීමයි.
මෙම පිළිතුර සින්ඩ්රේ සෝර්හස්ගේ පිළිතුරට අතිරේකයකි. එන්පීඑම් සහ බෝවර් අතර ඇති ප්රධාන වෙනස වන්නේ ඔවුන් පුනරාවර්තන පරායත්තතාවයන්ට සලකන ආකාරයයි. ඒවා තනි ව්යාපෘතියක එකට භාවිතා කළ හැකි බව සලකන්න.
මත npm නිතර අසන ප්රශ්න : (archive.org 6 සැප්තැම්බර් 2015 සිට සබැඳිය)
කූඩු පරායත්තතාවයකින් තොරව පරායත්තතා ගැටුම් වළක්වා ගැනීම වඩා දුෂ්කර ය. එන්පීඑම් ක්රියා කරන ආකාරයට මෙය මූලික වන අතර එය අතිශය සාර්ථක ප්රවේශයක් බව ඔප්පු වී ඇත.
මත බවර් මුල්පිටුව:
බෝවර් ඉදිරිපස කෙළවර සඳහා ප්රශස්තිකරණය කර ඇත. බෝවර් පැතලි පරායත්තතා ගසක් භාවිතා කරයි, එක් එක් පැකේජයට එක් අනුවාදයක් පමණක් අවශ්ය වන අතර පිටු භාරය අවම වශයෙන් අඩු කරයි.
කෙටියෙන් කිවහොත්, npm ස්ථාවරත්වය අරමුණු කරයි. බෝවර් අවම සම්පත් බරක් අරමුණු කරයි. ඔබ පරායත්ත ව්යුහය අඳින්නේ නම්, ඔබට මෙය පෙනෙනු ඇත:
npm:
project root
[node_modules] // default directory for dependencies
-> dependency A
-> dependency B
[node_modules]
-> dependency A
-> dependency C
[node_modules]
-> dependency B
[node_modules]
-> dependency A
-> dependency D
ඔබට පෙනෙන පරිදි එය සමහර පරායත්තයන් පුනරාවර්තනය කරයි. යැපීම A හි ස්ථාපිත අවස්ථා තුනක් ඇත!
බෝවර්:
project root
[bower_components] // default directory for dependencies
-> dependency A
-> dependency B // needs A
-> dependency C // needs B and D
-> dependency D
සියලුම අද්විතීය පරායත්තයන් එකම මට්ටමක පවතින බව මෙහිදී ඔබට පෙනේ.
ඉතින්, ඇයි npm භාවිතා කිරීමට කරදර වන්නේ?
සමහර විට පරායත්තතාවයට යැපීමට වඩා වෙනස් අනුවාදයක් අවශ්ය වේ. සී. එන්පීඑම් මෙම පරායත්තතාවයේ අනුවාද දෙකම ස්ථාපනය කරයි, එබැවින් එය කෙසේ හෝ ක්රියාත්මක වනු ඇත, නමුත් බෝවර් ඔබට ගැටුමක් ලබා දෙන්නේ එය අනුපිටපත් කිරීමට අකමැති නිසාය (එකම සම්පතක් වෙබ් පිටුවක පැටවීම නිසා ඉතා අකාර්යක්ෂම හා මිල අධික, එය බරපතල දෝෂ කිහිපයක් ද ලබා දිය හැකිය). ඔබට ස්ථාපනය කිරීමට අවශ්ය අනුවාදය අතින් තෝරා ගැනීමට සිදුවේ. මෙය එක් පරායත්තතාවයක් බිඳී යන බලපෑමක් ඇති කළ හැකි නමුත් එය කෙසේ හෝ නිවැරදි කිරීමට ඔබට අවශ්ය වනු ඇත.
එබැවින්, ඔබේ වෙබ් පිටුවල ප්රකාශයට පත් කිරීමට අවශ්ය පැකේජ සඳහා බොවර් යනු පොදු භාවිතයයි (උදා: ධාවන වේලාව , ඔබ අනුපිටපත් කිරීමෙන් වැළකී සිටින තැන), සහ පරීක්ෂා කිරීම, ගොඩනැඟීම, ප්රශස්තිකරණය, පරීක්ෂා කිරීම වැනි වෙනත් දේවල් සඳහා npm භාවිතා කරන්න (උදා: සංවර්ධන කාලය , අනුපිටපත් කිරීම අඩු සැලකිල්ලක් දක්වන තැන).
Npm 3 සඳහා යාවත්කාලීන කරන්න:
බෝවර් හා සසඳන විට npm 3 තවමත් වෙනස් ආකාරයකින් කටයුතු කරයි. එය ගෝලීය වශයෙන් පරායත්තයන් ස්ථාපනය කරනු ඇත, නමුත් එය හමු වන පළමු අනුවාදය සඳහා පමණි. අනෙක් අනුවාදයන් ගසෙහි ස්ථාපනය කර ඇත (මව් මොඩියුලය, පසුව node_modules).
npm
හෝ සමග අවම සම්පත් බර bower
.
ටීඑල්; ඩීආර්: එදිනෙදා භාවිතයේ ඇති විශාලතම වෙනස වන්නේ කූඩු පරායත්තයන් නොවේ ... එය මොඩියුල සහ ගෝලීය අතර වෙනසයි.
මම හිතන්නේ කලින් පෝස්ටර් මගින් මූලික වෙනස්කම් කිහිපයක් ආවරණය කර ඇත. (npm විසින් කූඩු පරායත්තයන් භාවිතා කිරීම සැබවින්ම විශාල, සංකීර්ණ යෙදුම් කළමනාකරණයට බෙහෙවින් උපකාරී වේ, නමුත් එය වඩාත්ම වැදගත් වෙනස යැයි මම නොසිතමි.)
කෙසේ වෙතත්, බෝවර් සහ එන්පීඑම් අතර ඇති මූලික වෙනසක් කිසිවෙකු පැහැදිලිව පැහැදිලි නොකිරීම ගැන මම පුදුම වෙමි. ඔබ ඉහත පිළිතුරු කියවන්නේ නම්, බොහෝ විට npm සන්දර්භය තුළ භාවිතා වන 'මොඩියුල' යන වචනය ඔබට පෙනෙනු ඇත. නමුත් එය සාමාන්යයෙන් වාක්ය ඛණ්ඩයක් ලෙස සඳහන් කර ඇත.
නමුත් මොඩියුල එදිරිව ග්ලෝබල් (හෝ මොඩියුල එදිරිව 'ස්ක්රිප්ට්') අතර වෙනස බෝවර් සහ එන්පීඑම් අතර ඇති වැදගත්ම වෙනස විය හැකිය. සෑම දෙයක්ම මොඩියුලවල තැබීමේ npm ප්රවේශය මඟින් ඔබ බ්රව්සරය සඳහා ජාවාස්ක්රිප්ට් ලියන ආකාරය වෙනස් කළ යුතුය.
<script>
ටැග්ස් මෙන් ගෝලීය සම්පත්මුලදී, බෝවර් යනු පැරණි-පැරණි ස්ක්රිප්ට් ගොනු පූරණය කිරීමයි. එම ස්ක්රිප්ට් ලිපිගොනු කුමක් වුවත්, බෝවර් ඒවා පටවනු ඇත. එහි මූලික අර්ථය වන්නේ බෝවර් යනු ඔබගේ සියලුම ස්ක්රිප්ට් ඔබේ පැරණි HTML <script>
හි ඇතුළත් කර ඇති ආකාරයටම <head>
බවයි.
ඉතින්, ඔබ පුරුදු වී ඇති එකම මූලික ප්රවේශය, නමුත් ඔබට හොඳ ස්වයංක්රීය පහසුවක් ලැබේ:
bower install
හා ක්ෂණිකව ඔවුන්ට අවශ්ය දේ දේශීයව ලබා ගත හැකිය.bower.json
, ඒවා ඔබ වෙනුවෙන් ද බාගත වේ.නමුත් ඉන් ඔබ්බට, අපි ජාවාස්ක්රිප්ට් ලියන ආකාරය බෝවර් වෙනස් නොකරයි . බෝවර් විසින් පටවන ලද ලිපිගොනු තුළට යන දේ ගැන කිසිවක් කිසිසේත් වෙනස් විය යුතු නැත. විශේෂයෙන් ම, මෙයින් අදහස් කරන්නේ බෝවර් විසින් පටවන ලද ස්ක්රිප්ට් වල ඇති සම්පත් (සාමාන්යයෙන්, නමුත් සැමවිටම නොවේ) තවමත් ගෝලීය විචල්යයන් ලෙස අර්ථ දැක්විය හැකි අතර එය බ්රව්සර් ක්රියාත්මක කිරීමේ සන්දර්භය තුළ ඕනෑම තැනක සිට ලබා ගත හැකි බවයි.
නෝඩ් ලෑන්ඩ් හි ඇති සියලුම කේත (සහ එන්පීඑම් හරහා පටවන ලද සියලුම කේත) මොඩියුල ලෙස ව්යුහගත කර ඇත (විශේෂයෙන්, පොදු ජේඑස් මොඩියුල ආකෘතිය ක්රියාත්මක කිරීමක් ලෙස හෝ දැන් ඊඑස් 6 මොඩියුලයක් ලෙස). එබැවින්, ඔබ බ්රව්සරයේ පරායත්තතාවයන් හැසිරවීමට එන්පීඑම් භාවිතා කරන්නේ නම් (බ්රව්සරීෆයි හරහා හෝ එකම කාර්යය කරන වෙනත් දෙයක් හරහා), ඔබ ඔබේ කේතය නෝඩ් කරන ආකාරයටම සැකසෙනු ඇත.
මට වඩා දක්ෂ පුද්ගලයින් 'මොඩියුල ඇයි?' යන ප්රශ්නයට විසඳුම් ලබා දී ඇත, නමුත් මෙන්න කැප්සියුල සාරාංශය:
window.variable
. තවමත් සිදුවීමට ඉඩ ඇති එක් අනතුරක් පැවරීම this.variable
මිස this
එය ඇත්ත වශයෙන්ම window
වර්තමාන සන්දර්භය තුළ පවතින බව නොදැන සිටීමයි .)මට නම්, ඉදිරිපස කේතය සඳහා මොඩියුල භාවිතා කිරීම පහත පරිදි වේ: තර්ක කිරීමට හා පරීක්ෂා කිරීමට පහසු වන පටු සන්දර්භයක වැඩ කිරීම සහ සිදුවන්නේ කුමක්ද යන්න පිළිබඳව වැඩි විශ්වාසයක් තිබීම.
CommonJS / Node මොඩියුලයේ සින්ටැක්ස් භාවිතා කරන්නේ කෙසේදැයි දැන ගැනීමට ගත වන්නේ තත්පර 30 ක් පමණි. මොඩියුලයක් වීමට යන ලබා දී ඇති JS ගොනුවක් තුළ, ඔබ මුලින්ම භාවිතා කිරීමට අවශ්ය ඕනෑම බාහිර පරායත්තතාවයක් ප්රකාශ කරයි:
var React = require('react');
ගොනුව / මොඩියුලය ඇතුළත, ඔබ සාමාන්යයෙන් කැමති ඕනෑම දෙයක් කරන අතර, බාහිර පරිශීලකයින්ට නිරාවරණය කිරීමට අවශ්ය යම් වස්තුවක් හෝ ශ්රිතයක් සාදන්න, සමහර විට එය අමතන්න myModule
.
ගොනුවක් අවසානයේ, ඔබට ලෝකය සමඟ බෙදා ගැනීමට අවශ්ය ඕනෑම දෙයක් අපනයනය කරයි, මේ ආකාරයට:
module.exports = myModule;
ඉන්පසු, බ්රව්සරයේ CommonJS මත පදනම් වූ කාර්ය ප්රවාහයක් භාවිතා කිරීම සඳහා, ඔබ එම තනි මොඩියුල ලිපිගොනු අල්ලා ගැනීමට, ධාවන වේලාවේදී ඒවායේ අන්තර්ගතය සංයුක්ත කිරීමට සහ අවශ්ය පරිදි ඒවා එකිනෙකට එන්නත් කිරීමට බ්රව්සරීෆයි වැනි මෙවලම් භාවිතා කරනු ඇත.
තවද, ES6 මොඩියුලයන් (ඔබ බාබෙල් හෝ ඊට සමාන ඊඑස් 5 වෙත සම්ප්රේෂණය කළ හැකි) පුළුල් පිළිගැනීමක් ලබා ඇති හෙයින් බ්රව්සරයේ හෝ නෝඩ් 4.0 හි වැඩ කරන බැවින්, අපි ඒවා ගැන හොඳ දළ විශ්ලේෂණයක් සඳහන් කළ යුතුය .
මෙම තට්ටුවේ මොඩියුල සමඟ වැඩ කිරීම සඳහා රටා ගැන වැඩි විස්තර .
සංස්කරණය කරන්න (පෙබරවාරි 2017): ෆේස්බුක් හි නූල් මේ දිනවල එන්පීඑම් සඳහා ඉතා වැදගත් විභව ආදේශකයක් / අතිරේකයක් වේ: වේගවත්, නිර්ණායක, නොබැඳි පැකේජ කළමනාකරණය, එන්පීඑම් ඔබට ලබා දෙන දේ මත ගොඩනැඟේ. ඕනෑම JS ව්යාපෘතියක් සොයා බැලීම වටී, විශේෂයෙන් එය ඇතුළට / පිටතට මාරු කිරීම එතරම් පහසු බැවින්.
සංස්කරණය කරන්න (2019 මැයි) "බෝවර් අවසානයේ අතහැර දමා ඇත . කතාවේ අවසානය." (h / t: anDanDascalescu, පහත, සාරාංශ සාරාංශය සඳහා.)
නූල් තවමත් ක්රියාකාරී වන අතර , එය නූල්ගේ සමහර ප්රධාන අංගයන් අනුගමනය කළ පසු ඒ සඳහා වූ බොහෝ වේගය එන්පීඑම් වෙත මාරු විය.
බෝවර් අවසානයේ අතහැර දමා ඇත . කතාවේ අවසානය.
Spotify හි ජාවාස්ක්රිප්ට් සංවර්ධකයා වන මැටියාස් පීටර් ජොහැන්සන් වෙතින් :
සෑම අවස්ථාවකම පාහේ, Bower හරහා Browserify සහ npm භාවිතා කිරීම වඩාත් යෝග්ය වේ. එය හුදෙක් බෝවර්ට වඩා ඉදිරිපස යෙදුම් සඳහා වඩා හොඳ ඇසුරුම්කරණ විසඳුමකි. Spotify හි, අපි සම්පූර්ණ වෙබ් මොඩියුල (html, css, js) ඇසුරුම් කිරීමට npm භාවිතා කරන අතර එය ඉතා හොඳින් ක්රියාත්මක වේ.
වෙබ් සඳහා පැකේජ කළමණාකරු ලෙස බෝවර් සන්නාම. මෙය සත්යයක් නම් එය නියමයි - ඉදිරිපස සංවර්ධකයෙකු ලෙස මගේ ජීවිතය යහපත් කළ පැකේජ කළමනාකරුවෙක් නියමයි. ගැටළුව වන්නේ බෝවර් ඒ සඳහා විශේෂිත මෙවලම් ඉදිරිපත් නොකිරීමයි. එය එන්පීඑම් ගැන මා දන්නා කිසිදු මෙවලමක් ඉදිරිපත් නොකරන අතර විශේෂයෙන් ඉදිරිපස සංවර්ධකයින්ට විශේෂයෙන් ප්රයෝජනවත් නොවේ. ඉදිරිපස සංවර්ධකයෙකුට එන්පීඑම් හරහා බෝවර් භාවිතා කිරීමෙන් කිසිදු ප්රතිලාභයක් නොමැත.
අපි බෝවර් භාවිතා කිරීම නවතා npm පමණ ඒකාබද්ධ කළ යුතුයි. ස්තුති වන්ත විය හැක්කේ, ඒ දේ සිදු වන්නේ :
බ්රවුසරකරණය හෝ වෙබ් පැක් සමඟ, ඔබගේ සියලුම මොඩියුල විශාල මිනි ගොනුවලට සම්බන්ධ කිරීම ඉතා පහසු වේ, එය කාර්ය සාධනය සඳහා, විශේෂයෙන් ජංගම උපාංග සඳහා විශිෂ්ටයි. එකම බලපෑමක් ලබා ගැනීම සඳහා සැලකිය යුතු වැඩි ශ්රමයක් අවශ්ය වන බෝවර් සමඟ එසේ නොවේ.
npm ඔබට එකවර මොඩියුලවල බහු සංස්කරණ භාවිතා කිරීමේ හැකියාව ලබා දෙයි. ඔබ බොහෝ යෙදුම් සංවර්ධනය කර නොමැති නම්, මෙය මුලින් ඔබට නරක දෙයක් ලෙස සලකනු ඇත, නමුත් ඔබ යැපුම් නිරයේ සටන් කිහිපයක් පසු කළ පසු ඔබට වැටහෙනු ඇත එක් මොඩියුලයක බහුවිධ අනුවාදයන් තිබීමේ හැකියාව තිබීම ඉතා අශෝභන බව විශිෂ්ට ලක්ෂණය. ඔබට සැබවින්ම අවශ්ය නම් මොඩියුලයක අනුවාද දෙකක් පමණක් භාවිතා කරන බව ස්වයංක්රීයව සහතික කරන ඉතා පහසු අඩුකිරීමේ මෙවලමක් npm ට ඇතුළත් වන බව සලකන්න - මොඩියුල දෙකකට එකම මොඩියුලයක එකම අනුවාදය භාවිතා කළ හැකි නම් , ඒවා සිදුවනු ඇත. නමුත් ඔවුන්ට නොහැකි නම් , ඔබට ඉතා පහසුයි.
(එම සටහන Webpack හා rollup අගෝස්තු 2016 වන විට Browserify වඩා හොඳ විය පුළුල් ලෙස සලකනු ඇත)
බෝවර් මොඩියුලවල තනි අනුවාදයක් පවත්වා ගෙන යයි, එය උත්සාහ කරන්නේ ඔබ වෙනුවෙන් නිවැරදි / හොඳම එක තෝරා ගැනීමට පමණි.
මොඩියුල පද්ධතියක් ඇති නිසා සහ ඔබ දේශීයව වැඩ කරන නිසා එන්පීඑම් නෝඩ් මොඩියුල සඳහා වඩා හොඳය. බෝවර් බ්රව්සරයට හොඳයි, මන්ද දැනට ඇත්තේ ගෝලීය විෂය පථය පමණක් වන අතර, ඔබ සමඟ වැඩ කරන අනුවාදය පිළිබඳව ඉතා තෝරා බේරා කටයුතු කිරීමට ඔබට අවශ්යය.
මගේ කණ්ඩායම බෝවර් වෙතින් ඉවත් වී එන්පීඑම් වෙත සංක්රමණය වූ නිසා:
වැඩි විස්තර සඳහා, "මගේ කණ්ඩායම බෝවර් වෙනුවට එන්පීඑම් භාවිතා කරන්නේ ඇයි" බලන්න .
මෙම ප්රයෝජනවත් පැහැදිලි කිරීම http://ng-learn.org/2013/11/Bower-vs-npm/ වෙතින් හමු විය.
එක් අතකින් npm නිර්මාණය කරන ලද්දේ node.js පරිසරයක භාවිතා කරන මොඩියුලයන් හෝ node.js භාවිතයෙන් සාදන ලද සංවර්ධන මෙවලම් වන කර්මා, ලින්ට්, මිනිෆයර් සහ යනාදිය ස්ථාපනය කිරීම සඳහා ය. ව්යාපෘතියක (පෙරනිමියෙන් node_modules වලින්) හෝ ගෝලීයව බහු ව්යාපෘති සඳහා භාවිතා කිරීමට npm ට මොඩියුල ස්ථාපනය කළ හැකිය. විශාල ව්යාපෘති වලදී පරායත්තතාවයන් නියම කළ හැකි ක්රමය වන්නේ පරායත්තතා ලැයිස්තුවක් අඩංගු package.json නම් ගොනුවක් නිර්මාණය කිරීමයි. ඔබ npm ස්ථාපනය ක්රියාත්මක කරන විට එම ලැයිස්තුව npm විසින් හඳුනාගනු ලබන අතර එමඟින් ඒවා බාගත කර ඔබ වෙනුවෙන් ස්ථාපනය කරයි.
අනෙක් අතට ඔබේ ඉදිරිපස පරායත්තතාවයන් කළමනාකරණය කිරීම සඳහා බෝවර් නිර්මාණය කරන ලදි. JQuery, AngularJS, underscore, වැනි පුස්තකාල. Npm ට සමාන එහි ගොනුවක් ඇති අතර ඔබට bower.json නම් පරායත්තතා ලැයිස්තුවක් නියම කළ හැකිය. මෙම අවස්ථාවෙහිදී, ඔබේ පෙරටුගාමී පරායත්තයන් ස්ථාපනය කරනු ලබන්නේ බෝවර් ස්ථාපනය කිරීමෙන් පෙරනිමියෙන් ඒවා bower_components නම් ෆෝල්ඩරයක ස්ථාපනය කරමිනි.
ඔබට පෙනෙන පරිදි, ඔවුන් සමාන කාර්යයක් ඉටු කළද ඒවා ඉලක්ක කර ඇත්තේ වඩා වෙනස් පුස්තකාල සමූහයකට ය.
npm dedupe
මෙය ටිකක් යල් පැන ගිය එකක්. මාටියාස්ගේ පිළිතුර බලන්න .
Node.js සමඟ වැඩ කරන බොහෝ පුද්ගලයින් සඳහා, bower හි ප්රධාන වාසියක් වන්නේ කිසිසේත් javascript නොවන පරායත්තතා කළමනාකරණය කිරීමයි. ඔවුන් ජාවාස්ක්රිප්ට් සමඟ සම්පාදනය කරන භාෂාවන් සමඟ වැඩ කරන්නේ නම්, ඒවායේ සමහර පරායත්තතා කළමනාකරණය කිරීමට npm භාවිතා කළ හැකිය. කෙසේ වෙතත්, ඔවුන්ගේ සියලු පරායත්තතා node.js මොඩියුල නොවේ. ජාවාස්ක්රිප්ට් සමඟ සම්පාදනය කරන සමහර ඒවාට අමුතු මූලාශ්ර භාෂා විශේෂිත මැන්ග්ලිං තිබිය හැකි අතර එමඟින් පරිශීලකයන් ප්රභව කේත අපේක්ෂා කරන විට ඒවා ජාවාස්ක්රිප්ට් වෙත සම්පාදනය කිරීම අනවශ්ය විකල්පයකි.
එන්පීඑම් පැකේජයක ඇති සෑම දෙයක්ම පරිශීලක මුහුණැති ජාවාස්ක්රිප්ට් විය යුතු නැත, නමුත් එන්පීඑම් පුස්තකාල පැකේජ සඳහා, අවම වශයෙන් සමහර ඒවා විය යුතුය.