javascript - Bower এবং npm মধ্যে পার্থক্য কি?



4 Answers

এই উত্তর সিন্ধু Sorhus এর উত্তরের একটি যোগসূত্র। Npm এবং Bower মধ্যে প্রধান পার্থক্য তারা recursive নির্ভরতা আচরণ করে উপায়। মনে রাখবেন যে তারা একক প্রকল্পে একসাথে ব্যবহার করা যেতে পারে।

এনএমপি FAQ এ : (6 সেপ্টেম্বর 2015 থেকে archive.org লিঙ্ক)

নির্ভরশীলতা নিস্তেজ ছাড়া নির্ভরতা দ্বন্দ্ব এড়ানোর জন্য এটি অনেক কঠিন। এটি npm কাজ করে যেভাবে মৌলিক, এবং একটি অত্যন্ত সফল পদ্ধতির প্রমাণিত হয়েছে।

Bower হোমপেজে:

Bower সামনে শেষ জন্য অপ্টিমাইজ করা হয়। ঝরনা একটি সমতল নির্ভরতা গাছ ব্যবহার করে, প্রতিটি প্যাকেজের জন্য শুধুমাত্র একটি সংস্করণ প্রয়োজন, সর্বনিম্ন পৃষ্ঠা লোড হ্রাস।

সংক্ষেপে, npm স্থায়িত্ব জন্য লক্ষ্য। Bower সংক্ষিপ্ত সম্পদ লোড করার লক্ষ্যে। আপনি নির্ভরতা গঠন আঁকা যদি, আপনি এই দেখতে পাবেন:

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

আপনি এটি পুনরাবৃত্তি কিছু নির্ভরতা ইনস্টল করতে পারেন হিসাবে দেখতে পারেন। নির্ভরতা একটি তিন ইনস্টল ইনস্ট্যান্স আছে!

আবাস:

project root
[bower_components] // default directory for dependencies
 -> dependency A
 -> dependency B // needs A
 -> dependency C // needs B and D
 -> dependency D

এখানে আপনি দেখেন যে সমস্ত অনন্য নির্ভরতা একই স্তরের উপর।

তাই, কেন npm ব্যবহার বিরক্ত?

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

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

Npm 3 এর জন্য আপডেট করুন:

এনপিপি 3 এখনও বower তুলনায় ভিন্নভাবে কাজ করে। এটি বিশ্বব্যাপী নির্ভরতাগুলি ইনস্টল করবে, তবে শুধুমাত্র এটির প্রথম সংস্করণটির মুখোমুখি হবে। অন্যান্য সংস্করণ গাছ (পিতা মডিউল মডিউল, তারপর node_modules) ইনস্টল করা হয়।

  • [Node_modules]
    • ডিপি এ v1.0
    • ডিপি বি v1.0
      • ডিপি এ v1.0 (রুট সংস্করণ ব্যবহার করে)
    • ডিপি সি v1.0
      • ডিপি এ v2.0 (এই সংস্করণ রুট সংস্করণ থেকে ভিন্ন, তাই এটি একটি নিছক ইনস্টলেশন হবে)

আরো তথ্যের জন্য, আমি npm 3 এর ডক্স পড়ার পরামর্শ দিই

javascript npm bower

bower এবং npm মধ্যে মৌলিক পার্থক্য কি? শুধু কিছু সহজ এবং সহজ চান। আমি আমার সহকর্মীদের কিছু তাদের প্রকল্পের মধ্যে বিনিময় এবং npm ব্যবহারযোগ্য দেখা করেছি।




2017-অক্টোবর আপডেট

Bower পরিশেষে অব্যবহৃত deprecated । গল্পের শেষে.

পুরোনো উত্তর

স্পটিফিতে জাভাস্ক্রিপ্ট ডেভেলপার ম্যাটিয়াস পেটার জহানসন থেকে :

প্রায় সব ক্ষেত্রে, ব্রাউজারটি এবং Bower এর উপর npm ব্যবহার করা আরও উপযুক্ত। এটি Bower হয় তুলনায় সামনে শেষ অ্যাপ্লিকেশন জন্য কেবল একটি ভাল প্যাকেজিং সমাধান। স্পটিফিতে, আমরা পুরো ওয়েব মডিউলগুলি প্যাকেজ করতে এনপিএম ব্যবহার করি (এইচটিএমএল, CSS, Js) এবং এটি খুব ভাল কাজ করে।

Bower নিজেই ওয়েবের জন্য প্যাকেজ ম্যানেজার হিসাবে ব্র্যান্ড। এটি সত্য ছিল যদি এটি অসাধারণ হবে - একটি প্যাকেজ ম্যানেজার যা আমার জীবনের একটি ভাল শেষ বিকাশকারী হিসাবে ভাল করে তোলে। সমস্যাটি হল যে বower এই উদ্দেশ্যে কোন বিশেষ সরঞ্জাম সরবরাহ করে না। এটা যে এনপিএমএ জানি না কোন টুলিং উপলব্ধ করা হয় না, এবং বিশেষ করে যে কেউ বিশেষভাবে front-end ডেভেলপারদের জন্য দরকারী। Npm উপর বower ব্যবহার করার জন্য একটি ফ্রন্ট শেষ বিকাশকারী জন্য সহজভাবে কোন সুবিধা নেই।

আমরা bower ব্যবহার বন্ধ করা উচিত এবং প্রায় npm একত্রিত করা উচিত। সৌভাগ্যক্রমে, যা ঘটছে তা হল :

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

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

(উল্লেখ্য, Webpack এবং rollup ব্যাপকভাবে ব্রাউজাইফির তুলনায় অগাস্ট 2016 হিসাবে বিবেচিত হয়।)




আমার দল বউয়ার থেকে দূরে সরানো হয়েছে এবং এনএমপি তে স্থানান্তরিত হয়েছে কারণ:

  • প্রোগ্রাম্যাটিক ব্যবহার বেদনাদায়ক ছিল
  • Bower এর ইন্টারফেস পরিবর্তন রাখা
  • ইউআরএল শর্ট্যান্ড মত কিছু বৈশিষ্ট্য সম্পূর্ণরূপে ভাঙ্গা হয়
  • একই প্রকল্পের মধ্যে Bower এবং npm উভয় ব্যবহার বেদনাদায়ক
  • Git ট্যাগগুলির সাথে সিঙ্কে bower.json সংস্করণ ক্ষেত্র রেখে রাখা বেদনাদায়ক
  • উত্স নিয়ন্ত্রণ! = প্যাকেজ ব্যবস্থাপনা
  • CommonJS সমর্থন সহজবোধ্য নয়

আরো বিস্তারিত জানার জন্য, "কেন আমার দল bower পরিবর্তে npm ব্যবহার করে" দেখুন




Node.js এর সাথে কাজ করে এমন অনেক লোকের জন্য, ঘোড়াটির একটি বড় সুবিধা হল নির্ভরশীলতা পরিচালনা করার জন্য যা জাভাস্ক্রিপ্ট নয়। যদি তারা জাভাস্ক্রিপ্ট কম্পাইল করে এমন ভাষাগুলির সাথে কাজ করে তবে এনপিএম তাদের কিছু নির্ভরতা পরিচালনা করতে ব্যবহার করতে পারে। তবে, তাদের সমস্ত নির্ভরতা নোড.জেজেড মডিউল হতে যাচ্ছে না। যাঁরা জাভাস্ক্রিপ্টে সংকলন করেন তাদের মধ্যে কিছু অদ্ভুত উৎস ভাষা নির্দিষ্ট মার্ংলিং থাকতে পারে যা ব্যবহারকারীদের সোর্স কোডের প্রত্যাশার সময় জাভাস্ক্রিপ্টে একটি অসাধারণ বিকল্প সংকলিত করে তাদের পাস করে।

এনপিএম প্যাকেজে সবকিছুই ব্যবহারকারীর মুখোমুখি জাভাস্ক্রিপ্ট হতে হবে না, তবে এনপিএম লাইব্রেরির প্যাকেজগুলির জন্য এটি অন্তত কিছু হওয়া উচিত।






Related