জাভাস্ক্রিপ্ট নির্ভরতা পরিচালন: এনপিএম বনাম বোরো বনাম ভোলো [বন্ধ]


160

আপনি কিভাবে তুলনা করবেন npm, bowerএবং volo?

তিনটিই কোনও ইউআই প্রকল্পের জন্য জাভাস্ক্রিপ্ট নির্ভরতা ইনস্টল করতে ব্যবহার করা যেতে পারে। আমি npmবুঝতেছি আরও নোড নির্দিষ্ট।

তো, কখন কী ব্যবহার করবেন?

npmএখনও দূরে দাঁড়িয়ে আছে, bowerএবং voloমনে হচ্ছে ঠিক একই সমস্যাটি সমাধান করা হচ্ছে, যদিও আমি npmএবং এর মধ্যে একটি লাইন আঁকতে সক্ষম নই bower-volo



1
আপনি যদি এখানে এই প্রশ্নটি পড়ছেন এবং 2015 থেকে উত্তর চান তবে আমার আপডেট হওয়া উত্তরটি দেখুন।
গুস্তাভোহনেকে

উত্তর:


104

এনপিএম এবং বোওয়ারের মধ্যে পার্থক্যকে সর্বোত্তমভাবে বর্ণনা করে এমন একটি বিবরণ হ'ল: এনপিএম প্যাকেজ নামে পরিচিত জাভাস্ক্রিপ্ট মডিউল পরিচালনা করে এবং বোভার ফ্রন্ট-এন্ড উপাদানগুলি (যেমন সিএসএস, এইচটিএমএল এবং জাভাস্ক্রিপ্ট) নামে পরিচিত উপাদানগুলি পরিচালনা করে। বোরওয়ার ইনস্টল করতে এনপিএমও ব্যবহৃত হয়। এখানে এনপিএম এবং বোভারের উপর একটি বিস্তৃত নিবন্ধ রয়েছে (ভোলোটি কভার করে না) এটি প্রচুর বিশদে যায়।


88
এটি খুব ভাল বর্ণনা নয়। এনএমপি অবশ্যই ফ্রন্ট-এন্ড উপাদানগুলি ইনস্টল করতে ব্যবহার করা যেতে পারে।
বিটি

যদিও আমি লক্ষ করেছি যে এনপিএমের কয়েকটি "ফ্রন্টএন্ড" লাইব্রেরি তাদের ধনাত্মক অংশগুলির পক্ষে ছেড়ে দেওয়া হয়েছে। উদাহরণস্বরূপ আম্বর নিন , যা এক বছরে প্রকাশিত হয়নি।
ব্রিঙ্গনজালেজ

4
@ নাট নামটি কেবল যেখানে শুরু হয়েছিল। এনপিএম এখন খুব সাধারণ উদ্দেশ্যে প্যাকেজ পরিচালনা ব্যবস্থা। ফ্রন্ট-এন্ড মডিউলগুলি ইনস্টল করতে আমি নিয়মিত এনপিএম ব্যবহার করি। কমনজ মডিউল, বনাম amd, বনাম অন্য যে কোনও কিছুর জন্য এনপিএম ব্যবহারে কোনও পার্থক্য নেই। আপনি জাভা স্ক্রিপ্ট মডিউলগুলির পাশাপাশি এনপিএমও ব্যবহার করতে পারেন। সুতরাং, এটি কেবল এনএমপি এবং বোরের মধ্যে কোনও পার্থক্য নয়। আপনি তাদের প্যাকেজ বা উপাদানগুলি বলুন না কেন, তারা উভয়ই স্বেচ্ছাসেবী ফাইলের সংগ্রহ।
বিটি

2
এটি একটি খুব বিভ্রান্তিমূলক উত্তর, বিবেচনা করে বোরের এইচটিএমএল, সিএসএস এবং জাভাস্ক্রিপ্ট নিয়ে কাজ করার কোনও নীতি নেই। এনপিএমের কোনও নীতিই নেই তবে এনপিএমের প্রায় সমস্ত কিছুই কমপক্ষে কমেন্ট এবং মাঝে মাঝে অন্যান্য ফর্ম্যাটকে সমর্থন করার জন্য লেখা হয়। আপনি যেমন নমনীয় প্যাকেজগুলিতে এইচটিএমএল এবং সিএসএস স্থাপন করতে পারেন ঠিক তেমনিভাবে আপনি বোরের সাহায্যে পারেন। সিএনএস এবং এইচটিএমএল অন্তর্ভুক্ত প্যাকেজ সহ এনএমপিতে অনেকগুলি ফ্রন্টএন্ড-প্যাকেজ রয়েছে।
সাবস্ট্যাক

3
আপনি ব্যবহার করে থাকেন browserify , npm নিখুঁত প্যাকেজ ম্যানেজার। আপনি কোন প্যাকেজ ম্যানেজারটি ব্যবহার করেন তা বিবেচনা করে না বলে আমি মনে করি না, তবে আমি ব্যক্তিগতভাবে প্রতি প্রকল্পে কেবল একটির সাথে লেগে থাকব।
Eruant

72

আবাস

এটি খুব সামান্য বৈশিষ্ট্য থাকা সত্ত্বেও এটি ফ্রন্ট-এন্ড বিকাশকারীদের মধ্যে এখনও খুব জনপ্রিয়। প্রতিটি ফ্রন্ট-এন্ড প্যাকেজ এটি ব্যবহার করছে। এছাড়া একটি হল npm মধ্যে আবাস একত্রীকরণ উদ্যোগ

বোভারটি ক্লায়েন্ট-পক্ষের জন্য অনুকূলিত হয়েছে এবং কেবল ফ্ল্যাট নির্ভরতা গাছগুলি সমর্থন করে, যেমন প্রতিটি গ্রন্থাগার কেবল একবার ব্যবহার করা উচিত (যেহেতু ক্লায়েন্টের কাছে একই লাইব্রেরির বিভিন্ন সংস্করণ পাঠানো ব্যয়বহুল), এবং নির্ভরতার সীমাবদ্ধতাগুলি অবশ্যই ব্যবহারকারীকে সমাধান করতে হবে ।

আপনি বোরার রেজিস্ট্রি ( bower search <some keyword>) এর সাথে সম্পর্কিত ফ্রন্ট-এন্ডে এমন কোনও কিছু খুঁজে পেতে আশা করতে পারেন - আমার মতে, অন্যান্য প্যাকেজ পরিচালকদের ক্ষেত্রে বোরওয়ারের এটিই সবচেয়ে বড় সুবিধা।

Volo

আমি এখনও বছরে 5 মিনিটের বেশি এটি ব্যবহার করি নি। এটি সম্পর্কে জানেন না, তবে যা আমি দেখতে পাচ্ছি তাতে কিছু বিল্ড সরঞ্জাম অন্তর্ভুক্ত রয়েছে, যা গ্রান্ট ব্যবহারকারীদের কাছে খুব পরিচিত।

npm

হ্যাঁ, এনপিএম মানে নোড প্যাকেজ ম্যানেজার। তবে আজকাল আপনি এটি প্রতিটি কিছুর জন্য ব্যবহার করতে পারেন; লোকেরা আর কেবল npm installজিনিসগুলিতে ইঙ্গিত করে না এবং কেবল নোড পরিবেশে তাদের কাজ করার আশা করে ing উদাহরণস্বরূপ, টুইটার বুটস্ট্র্যাপের জন্য অনেকগুলি এনপিএম প্যাকেজ রয়েছে

নেস্টেড নির্ভরতা গাছ সহ সার্ভার-সাইড ব্যবহারের জন্য এনপিএম অনুকূলিত হয়েছে। প্রতিটি নির্ভরতার নিজস্ব নির্ভরতা থাকতে পারে যা তাদের নিজস্ব থাকতে পারে, ইত্যাদি। প্রতিটি নির্ভরতা যেমন ইন্ডোরকোরের নিজস্ব সংস্করণটি ব্যবহার করতে পারে কারণ এটি নির্ধারিত নির্ভরতা সংস্করণগুলির দ্বন্দ্বগুলি নির্মূল করে। তবে আসন্ন এনপিএম সংস্করণ 3 নির্ভরতা গাছকে সমতল করবে :

এনপিএম @ 3 এর সাথে আপনার নোড_মডিউলগুলির ডিরেক্টরি অনেক বেশি চাটুকার হবে। আপনার সমস্ত নির্ভরতা এবং আপনার বেশিরভাগ উপ-নির্ভরতা (এবং (উপ) + নির্ভরতা) শীর্ষ স্তরে একে অপরের পাশে বসে থাকবে। যখন দ্বন্দ্ব রয়েছে কেবলমাত্র গভীর স্তরে মডিউলগুলি ইনস্টল করা হবে। এটি উইন্ডোজ ব্যবহারকারীদের জন্য বিষয়গুলিকে অনেক সহজ করে তুলবে।

এনপিএম ব্যবহারে আমি কিছু সুবিধা দেখতে পাচ্ছি:

  • এটি অন্যান্য সমস্ত প্যাকেজ পরিচালকদের দ্বারা ব্যবহার করা হয় (উপাদান, বোভার, ভোলো, জেএসপিএম, ইত্যাদি);
  • বিল্ড স্ক্রিপ্টগুলি ব্যবহারের অনুমতি দেয়;
  • এনপিএম-ভিত্তিক প্যাকেজগুলি অন্তঃসীক্ষা করার জন্য প্রচুর সরঞ্জাম উপলব্ধ

এনএমপি হ'ল জাভাস্ক্রিপ্টের প্যাকেজ ম্যানেজার।

npmjs.com স্ক্রিনশট


২০১৩ সালের ফেব্রুয়ারি পর্যন্ত আমার মতামতটি নিম্নলিখিত ছিল। দয়া করে এটি আর বিবেচনায় নেবেন না।

npm

আপনি যখন কোনও নোড প্রকল্পের সাথে থাকবেন তখন এটির সাথে লেগে থাকা আরও ভাল, খুব কম প্রকল্প রয়েছে যা ব্রাউজারগুলিতেও উপলভ্য ...

আবাস

বোর এই মুহূর্তে পপ লোক। তাদের হুডের অধীনে প্রচুর প্রকল্প রয়েছে এবং প্রকল্পের রক্ষণাবেক্ষণকারীরা তাদের বাওয়ারের রেজিস্ট্রিতে আপ-টু-ডেট রাখতে চান ...

এটা লজ্জাজনক যে তিনি মাঝে মাঝে কিছুটা বগিও হন।

Volo

এর পর থেকে আমি 5 মিনিটেরও বেশি সময় ভোলোর চেষ্টা করে দেখিনি, তবে যা আমি দেখতে পেলাম তা দেখে মনে হচ্ছে বোয়ারের চেয়ে আরও নমনীয়।

ভোলোর জন্য একটি নেতিবাচক বিষয় হ'ল তাদের প্রকল্পগুলি খুব পুরানো।


19
এনপিএম এ হাজার হাজার মডিউল রয়েছে যেগুলি কেবল ব্রাউজারগুলিতে কাজ করে অথবা উভয় নোড এবং ব্রাউজারগুলিতে কাজ করে। তাদের অনেকের সিআই ব্যাজ রয়েছে যা তারা আপনাকে জানায় যে তারা ঠিক কোন ব্রাউজারগুলিতে কাজ করে।
সাব্যাক করুন

আমি যখনই ইতিমধ্যে ইনস্টলেশনটির জন্য এনপিএম-র উপর নির্ভর করে বোর ব্যবহার করার জন্য এনজিওরপ্লিটের মতো প্রকল্পের প্রয়োজনীয়তা বুঝতে পারি না
লোলস্কি

5
"পপ লোক" কী? "পপ" হ'ল সংক্ষেপ "জনপ্রিয়" জন্য?
ব্রায়ান ওকলে

4
আপনার স্ক্রিনশটে এনপিএম পারমাণবিক পরিকল্পনার ম্যানুয়াল;)
জিম জোন্স

24

তারা একই সমস্যার সমাধান করছে বলে মনে হচ্ছে তবে বিভিন্ন পরিবেশ / জগতের জন্য। ব্রাউজারের জন্য নোডেজ এবং ভোলো, বোভারের জন্য এনপিএম।

সত্যটি আপনি ব্রাউজারের জাভাস্ক্রিপ্ট এবং সিএসএস পরিচালনা করতে এনপিএম ব্যবহার করতে পারেন। এটি করতে আপনাকে বাধা দেওয়ার কিছুই নেই। সেই অর্থে এনপিএম ব্যবহার করা আমার কাছে একই উদ্দেশ্যে দুটি পৃথক সরঞ্জাম পরিচালনা করার চেয়ে বেশি স্বাভাবিক মনে হয়।

মনে হচ্ছে কমপক্ষে আরও জনপ্রিয় প্যাকেজের জন্য বোরের আরও প্যাকেজ উপলব্ধ রয়েছে। তবে শীঘ্রই jQuery সরাসরি এনপিএমেও উপলব্ধ হবে এবং সম্ভবত অন্যান্য সমস্ত গ্রন্থাগার একই প্রবণতা অনুসরণ করবে।

আমার মতে, যেহেতু মত সরঞ্জাম browserify এবং webmake সেখানে আউট, ব্রাউজার যে সাহায্য ব্যবহার নোড মডিউল, সেখানে আর না জন্য বাস্তব প্রয়োজন নেই আবাস বা Volo , যতক্ষণ না তারা (আপনার জন্য অন্য কিছু প্রস্তাব একটি নির্দিষ্ট মডিউল শুধুমাত্র বিদ্যমান তাদের রেজিস্ট্রেশন)।

ভোলো এবং বোর উভয়ই ভাল, তবে আমার দৃষ্টিকোণ থেকে আপনি যদি ইতিমধ্যে এনপিএম ব্যবহার করেন তবে এটির সাথে লেগে থাকা আরও ভাল।

দয়া করে নোট করুন যে আপনি ব্রাউজরিফি বা ওয়েবমেক ব্যবহার না করেও আপনার ক্লায়েন্টের নির্ভরতা পরিচালনা করতে এনপিএম ব্যবহার করতে পারেন । আমি যে প্রকল্পগুলিতে কাজ করছি তার বেশিরভাগ ক্ষেত্রে, এনএমপি মডিউলগুলি ইনস্টল হওয়ার পরে আমি তাদের ক্লায়েন্ট অ্যাপ্লিকেশনগুলি যে স্থানে ব্যবহার করে সেগুলিতে তাদের স্থাপনের জন্য আমি একটি স্ক্রিপ্ট চালাই। কখনও কখনও আমি অন্যান্য জেএস ফাইলগুলির সাথে ফাইলটি একত্রিত করার জন্য গ্রান্ট ব্যবহার করি এবং কখনও কখনও আমি এটি আমার ওয়েব অ্যাপ্লিকেশনগুলির টেম্পলেট ফাইলগুলি থেকে সরাসরি উল্লেখ করি। যাই হোক না কেন, এটি ব্যক্তিগত পছন্দ। অন্যরা বাওয়ার বা ভোলোকে তাদের কাজের প্রবাহে আরও প্রাকৃতিকভাবে ফিট করার কারণে এটি ব্যবহার করা সহজ।


1
একই সমস্যার জন্য প্রতিযোগিতামূলক সমাধান থাকা ভাল। আমাদের ধারণা yeomanইতিমধ্যে যখন কোনও প্রকল্প কেন নতুন প্যাকেজ ম্যানেজারের সাথে আসে npm? (এটি পরিপক্ক, বিখ্যাত ও বৈশিষ্ট্য সমৃদ্ধ) এই চিন্তাভাবনাটি অনুভব করে যে আমি এখনও সত্যিকারের পয়েন্টটি অনুপস্থিত।
যুগাল জিন্দল

1
আসলেই নয়, তবে আপনি যেমন বলেছিলেন যে চাকাটিকে পুনরায় উদ্ভাবন করা কিছু সময় মজার, ঠিক তেমন কারণেই এবং কখনও কখনও এটি করে একই সমস্যাটি সমাধান করার চেষ্টা করার সময় কিছু উন্নতি করা হয়। তারা কেন নতুন করে বানাবেন তা বেছে নেবেন না, বিকাশকারীদের প্যাকেজগুলি সন্ধান করা আরও সহজ করে তুলুন। সমস্ত সীমানা বিকাশকারীদের নোডের অভিজ্ঞতা নেই, আমার ধারণা বোরারের মতো প্রকল্পগুলির পিছনে এটিই মূল কারণ। নোড ব্যবহারকারীদের কাছে এটি আরও সহজ করার চেষ্টা করুন, আমি এখানে অনুমান করছি।
রাই রিওজাস

আমার ধারণা তারা npmপ্রচ্ছদ সরলতার পক্ষে ঝামেলা আলাদা করতে চেয়েছিল । সুতরাং সীমান্ত উন্নয়নের জন্য।
যুগল জিন্দল

15

এনপিএম-এর উপরে বাওয়ারের বড় সুবিধাটি হ'ল এর নির্ভরতা পরিচালনা কোনও উপাদানটির একক সংস্করণ ব্যবহার করে (যেখানে এনপিএম বিভিন্ন কপি / সংস্করণকে বিভিন্ন মডিউলের সাবনির্ভরতা হিসাবে কাজ করে) ব্যবহার করে। এটি একটি খুব ভাল জিনিস কারণ এটি আপনার ক্লায়েন্টের পাশের জাভাস্ক্রিপ্টকে বিভিন্ন সংস্করণে কোনও উপাদানটির একাধিক অনুলিপি অন্তর্ভুক্ত করার প্রয়োজনের মাধ্যমে স্ফীত হয়ে যাওয়া রোধ করে। মডিউলটির একাধিক অনুলিপি অন্তর্ভুক্ত কীভাবে এনপিএমের নির্ভরতা পরিচালন কাজ করে তার কেন্দ্রীয় এবং এনপিএম অতএব ক্লায়েন্ট সাইড প্যাকেজ পরিচালনার জন্য সম্পূর্ণরূপে অসমর্থিত।

উপরোক্ত একটি ফলাফল হ'ল বোর প্যাকেজ রক্ষণাবেক্ষণকারী এবং গ্রাহকরা দ্বন্দ্ব এড়াতে তাদের নির্ভরতা সংস্করণ নম্বর বজায় রাখার বিষয়ে আরও সচেতন থাকতে হবে, তবে এটি মূল্য দিতে হয়। এবং আমি দেখতে পাই যে এনপিএম মডিউলগুলি তাদের বড়, ছোট এবং প্যাচ রিলিজ দেওয়ার ক্ষেত্রে প্রায়শই নিবিড় থাকে তাই এনপিএম নির্ভরতা পরিচালনটি হুবহু গোলাপের বিছানা নয়।


3
প্যাকেজ ম্যানেজার সেই ফোল্ডার থেকে সরাসরি আপনার ফ্রন্টএন্ড কোড পরিবেশন করে থাকলে এটি সত্য। আমার ক্ষেত্রে আমার কাছে হয় কম / জেএস ফাইলগুলি প্রসেস করার জন্য বিল্ড স্ক্রিপ্ট আছে বা সেই ফাইলগুলি থেকে একটি বান্ডিল তৈরি করতে ব্রাউজ করা হয়েছে। সুতরাং এটি আমার ক্ষেত্রে সত্যিই বড় সমস্যা নয়। বিতরণ করা কোডটির সর্বদা সঠিক সংস্করণ থাকে, এমনকি যখন অন্য উপ-উপাদানগুলি বিকাশের সময় নকল থাকতে পারে তারা কখনই উত্পাদন না পায়।
রাই রিওজাস

এমনকি যদি আপনি অজান্তে (উপনির্ভরতা হিসাবে) একই নির্ভরতার দুটি ভিন্ন সংস্করণ প্রয়োজন? আমি মনে করি এই ক্ষেত্রে আপনি ভুল
Wheresrhys

আমার নিয়মিত আমি নিয়ন্ত্রণ করি না এমন মডিউলগুলির প্রয়োজন হয় না, তাই সেগুলি সর্বদা সঠিক হবে ... যদি অজান্তে কোনও মডিউল শিমডগুলি থেকে একটি প্রদত্ত মডিউল প্রয়োজন হয় তবে বিল্ডটি ব্যর্থ হবে। আমার ক্ষেত্রে বোর ব্যবহার করার কোনও অর্থ নেই কোনও লাভ নেই
রাই রিওজাস

সুতরাং আপনার সম্পূর্ণ ক্লাসের নির্ভরতা গাছের নিয়ন্ত্রণ থাকলে আপনার ক্লায়েন্টের সাইড কোডে মডিউলগুলি অনুলিপি করা এড়াতে কেবল এনএমপি নিরাপদে বলা যেতে পারে। এটি অবশ্যই আমি কাজ করে না এমন বিশাল অংশের ক্ষেত্রে না এবং সম্ভবত বেশিরভাগ প্রকল্পের ক্ষেত্রে ক্লায়েন্ট সাইড মডিউলগুলি অন্তর্ভুক্ত করার জন্য নির্ভরতা ব্যবস্থাপক ব্যবহার করে না using
Wheresrhys

1
আপনি যদি ম্যাসআপগুলিতে কাজ না করেন তবে আপনার নির্ভরতা গাছটি এতটা জটিল হবে না, কমপক্ষে তৃতীয় পক্ষের কোডের জন্য। বেশিরভাগ জেএস লাইব্রেরিগুলি একটি একক বিশ্বব্যাপী রফতানি করে, তাই ব্রাউসরিফাই-শিম ব্যবহার করে আপনি নিশ্চিত করতে পারেন যে আপনি সেগুলি বিশ্বব্যাপী সুযোগ থেকে ব্যবহার করতে পারেন তাই সর্বদা আপনার নিয়ন্ত্রণের একটি সংস্করণ। আমার বক্তব্যটি হ'ল আপনি ইতিমধ্যে থাকা একটির উপরে অন্য প্যাকেজ পরিচালকের প্রয়োজন ছাড়াই আপনি এটি অর্জন করতে পারেন। শেষ পর্যন্ত এটি পছন্দগুলির বিষয় হতে পারে। সবসময় আপস করা হয়।
রাই রিওজাস

5

আমি জানি এটি প্রশ্নের আওতায় নেই তবে এর বাইরে আরও একটি বিকল্প রয়েছে। জাম জেএস - http://jamjs.org/ আকর্ষণীয় একটি বিষয় হ'ল এটি জামে ক্ষীণ ক্ষমতা রয়েছে:

jam compile output.js

কারও আবার একটি প্যাকেজ ম্যানেজার তৈরি করা উচিত এবং এর নাম দেওয়া উচিত: ইয়াপএম :)


5
আপনার ইচ্ছাকে মঞ্জুর করা হয়েছে: github.com/rlidwka/yapm : P
alex

1
আমি ব্রাউজারের পক্ষে নির্ভরতা পরিচালকের জন্য ভাবছিলাম তবে আমি উভয়ের জন্যই এই কাজটি অনুমান করি: পি এই কারণেই আমি স্টার্টআপগুলি করতে পারি না, আমার সমস্ত ধারণা ইতিমধ্যে চিন্তা করা হয়েছিল thought
ব্রুস লিম

@ ব্রুসলিম হ্যাঁ, প্রতিবার যখনই আমরা মনে করি যে আমাদের একটি ভাল ধারণা পাওয়া গেছে, সেখানে অন্য কিছু লোক রয়েছে যারা ইতিমধ্যে এটি পেয়েছেন।
ইভান হু
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.