এনপিএম বনাম বোভার বনাম ব্রাউজারফ্রি বনাম গুল্প বনাম গ্রান্ট বনাম ওয়েবপ্যাক


1886

আমি সর্বাধিক জনপ্রিয় জাভাস্ক্রিপ্ট প্যাকেজ পরিচালক, বান্ডেলার এবং টাস্ক রানার সম্পর্কে আমার জ্ঞানের সংক্ষিপ্তসার চেষ্টা করছি। আমি ভুল হলে দয়া করে আমাকে সংশোধন করুন:

  • npmএবং bowerপ্যাকেজ পরিচালক। তারা কেবল নির্ভরতা ডাউনলোড করে এবং কীভাবে নিজেরাই প্রকল্পগুলি তৈরি করতে পারে তা জানে না। তারা যা জানেন তা হ'ল সমস্ত নির্ভরতা আনার পরে কল করা webpack/ gulp/ grunt
  • bowerএর মতো npm, তবে চ্যাপ্টা নির্ভরশীলতা গাছ তৈরি করে ( npmএটি পুনরাবৃত্তভাবে পৃথক করে না)। অর্থ npmপ্রতিটি নির্ভরতার জন্য নির্ভরতা আনয়ন করে (কয়েকবার একই জিনিস আনতে পারে), যখন bowerআপনাকে ম্যানুয়ালি উপ-নির্ভরতা অন্তর্ভুক্ত করার প্রত্যাশা করে। কখনও কখনও bowerএবং npmযথাক্রমে ফ্রন্ট-এন্ড এবং ব্যাক-এন্ডের জন্য একসাথে ব্যবহৃত হয় (যেহেতু প্রতিটি মেগাবাইট ফ্রন্ট-এন্ডে গুরুত্বপূর্ণ হতে পারে)।
  • gruntএবং gulpঅটোমেটিক হতে পারে এমন সমস্ত কিছু স্বয়ংক্রিয় করার জন্য টাস্ক রানাররা (যেমন সিএসএস / স্যাস কম্পাইল করুন, চিত্রগুলি অনুকূলিত করুন, একটি বান্ডিল তৈরি করুন এবং এটি মাইনাইফ করুন / ট্রান্সিলাইপ করুন)।
  • gruntবনাম gulp( mavenবনাম। gradleবা কনফিগারেশন বনাম কোডের মতো)। গ্রান্ট পৃথক স্বতন্ত্র কাজগুলি কনফিগার করার উপর ভিত্তি করে, প্রতিটি টাস্ক ফাইল / হ্যান্ডলগুলি / ক্লোজ ফাইলটি খোলায়। গুল্পের জন্য কম পরিমাণের কোড দরকার এবং নোড স্ট্রিমের উপর ভিত্তি করে এটি পাইপ চেইনগুলি তৈরি করতে দেয় (ডাব্লু / ও একই ফাইলটি আবার খোলে) এবং এটি আরও দ্রুত করে তোলে।
  • webpack( webpack-dev-server) - আমার জন্য এটি পরিবর্তনগুলির পুনরায় লোডিং সহ একটি টাস্ক রানার যা আপনাকে সমস্ত জেএস / সিএসএস দর্শকদের ভুলে যাওয়ার অনুমতি দেয়।
  • npm/ bower+ প্লাগইনগুলি টাস্ক রানারগুলিকে প্রতিস্থাপন করতে পারে। তাদের ক্ষমতার প্রায়ই ছেদ যাতে আপনি ব্যবহার করার দরকার হয় বিভিন্ন প্রভাব হয় gulp/ gruntওভার npm+ + প্লাগিন। তবে টাস্ক রানারগণ জটিল কাজের জন্য অবশ্যই ভাল (যেমন "প্রতিটি বিল্ড বান্ডেল তৈরি করে, ES6 থেকে ES5 এ ট্রান্সপ্লাইল করুন, এটি সমস্ত ব্রাউজারের এমুলেটরগুলিতে চালান, স্ক্রিনশট তৈরি করুন এবং এফটিপিপির মাধ্যমে ড্রপবক্সে স্থাপন করুন")।
  • browserifyব্রাউজারগুলির জন্য প্যাকেজিং নোড মডিউলগুলির অনুমতি দেয়। browserifyবনাম nodeএর requireআসলে এএমডি বনাম কমনজেএস

প্রশ্নাবলী:

  1. webpack& কি webpack-dev-server? অফিসিয়াল ডকুমেন্টেশন বলছে এটি একটি মডিউল বান্ডেলার তবে আমার কাছে এটি কেবল একটি টাস্ক রানার। পার্থক্য কি?
  2. আপনি কোথায় ব্যবহার করবেন browserify? নোড / ইএস 6 আমদানি করে আমরা কি একই কাজটি করতে পারি না?
  3. আপনি কখন gulp/ gruntবেশি npm+ প্লাগইন ব্যবহার করবেন ?
  4. আপনি একটি সংমিশ্রণ ব্যবহার করার প্রয়োজন হলে দয়া করে উদাহরণ সরবরাহ করুন

52
রোলআপ যোগ করার সময় ? 😝
gman

167
এটি একটি খুব যুক্তিসঙ্গত প্রশ্ন। আমার মতো সিউডো ওয়েব-
ডেভসরা


41
@ ফিশারম্যান আমি এতে সম্পূর্ণ নতুন, এবং এটি সম্পূর্ণ বাদাম বলে মনে হচ্ছে ...
ডেভিড স্টোজিক

13
@ ফিশারম্যান "প্রস্তাবিত" মন্তব্যটি আমি কেবল পড়েছি আরও খারাপ ছিল! ডি: আমি কেবল একটি ফ্রিকিং স্ট্যাটিক পৃষ্ঠা তৈরি করতে চাই যা বেশ কয়েকটি সিএসএস / জেএস লিব ব্যবহার করে, এবং এমন একটি সরঞ্জাম ব্যবহার করে উপকৃত হতে পারে যা একত্রে সংকলন করতে পারে ... আমার Ctrl-C এ কিছু বিশ্রাম দেওয়ার জন্য কিছু টেম্প্লেটিং ইঞ্জিনে ফেলে দিন / সিটিআরএল-ভি আঙ্গুলগুলি, এবং এটি নিখুঁত হতে চাই ... এবং তবুও কয়েক ঘন্টা, এখনও যাওয়ার পথ সন্ধান করার চেষ্টা করছে ...
ডেভিড স্টোসিক

উত্তর:


1027

ওয়েবপ্যাক এবং ব্রাউজারফাই

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

উদাহরণস্বরূপ, ধরা যাক আপনি ES6 কোডটি মডিউলগুলিতে বিভক্ত লিখেছেন এবং এটি একটি ব্রাউজারে চালাতে সক্ষম হতে চান। যদি এই মডিউলগুলি নোড মডিউল হয় তবে ব্রাউজারগুলি সেগুলি বুঝতে পারবে না কারণ সেগুলি কেবল নোড পরিবেশে রয়েছে। ES6 মডিউলগুলিও IE11 এর মতো পুরানো ব্রাউজারগুলিতে কাজ করবে না। তদতিরিক্ত, আপনি সম্ভবত পরীক্ষামূলক ভাষার বৈশিষ্ট্যগুলি (ES পরবর্তী প্রস্তাবসমূহ) ব্যবহার করেছেন যা ব্রাউজারগুলি এখনও প্রয়োগ করে না তাই এ জাতীয় স্ক্রিপ্ট চালানো কেবল ত্রুটি ছুঁড়ে দেয়। ওয়েবপ্যাক এবং ব্রাউজারফাইয়ের মতো সরঞ্জামগুলি কোনও ব্রাউজার কার্যকর করতে সক্ষম এমন ফর্মটিতে এই কোডটি অনুবাদ করে এই সমস্যাগুলি সমাধান করে । তার উপরে, তারা those বান্ডিলগুলিতে বিপুল পরিমাণে অপ্টিমাইজেশন প্রয়োগ করা সম্ভব করে।

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


ওয়েবপ্যাক ডেভ সার্ভার

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


টাস্ক রানার্স বনাম এনপিএম স্ক্রিপ্টগুলি

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

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


উদাহরণ

উদাহরণস্বরূপ, আমি আপনাকে পরামর্শ দিচ্ছি যে এই প্রতিক্রিয়া স্টার্টার প্রকল্পটি দেখুন , যা আপনাকে পুরো বিল্ড এবং মোতায়েন প্রক্রিয়াটি কভার করে এনপিএম এবং জেএস স্ক্রিপ্টগুলির একটি দুর্দান্ত সমন্বয় দেখায় shows আপনি সেই এনপিএম স্ক্রিপ্টগুলি package.jsonমূল ফোল্ডারে, একটি নামের মধ্যে খুঁজে পেতে পারেন scripts। সেখানে আপনি বেশিরভাগ কমান্ডের মুখোমুখি হবেন babel-node tools/run start। হট্টগোল-নোড একটি CLI সরঞ্জাম (কর্মক্ষেত্রে ব্যবহারযোগ্য বোঝানো হয় না), যা প্রথম প্রনয়ন ES6 ফাইল এ tools/run(run.js অবস্থিত ফাইল টুলস মূলত রানার ইউটিলিটি -)। এই রানারটি একটি আর্গুমেন্ট হিসাবে একটি ফাংশন নেয় এবং এটি সম্পাদন করে, যা এই ক্ষেত্রে start- অন্য একটি ইউটিলিটি (start.js) উত্স ফাইলগুলি (ক্লায়েন্ট এবং সার্ভার উভয়) বান্ডিল করার জন্য এবং অ্যাপ্লিকেশন এবং বিকাশ সার্ভার শুরু করার জন্য দায়ী (দেব সার্ভারটি সম্ভবত ওয়েবপ্যাক ডেভ সার্ভার বা ব্রাউজারসিঙ্ক হবে)।

আরও সুনির্দিষ্টভাবে বলা, start.jsক্লায়েন্ট এবং সার্ভার উভয় পক্ষের বান্ডিল তৈরি করে, একটি এক্সপ্রেস সার্ভার শুরু করে এবং একটি সফল লঞ্চের পরে ব্রাউজার-সিঙ্কটি আরম্ভ করে, যা লেখার সময় এইরকম দেখায় (দয়া করে নতুন কোডের জন্য স্টার্টার প্রকল্পটির প্রতিক্রিয়াটি দেখুন )।

const bs = Browsersync.create();  
bs.init({
      ...(DEBUG ? {} : { notify: false, ui: false }),

      proxy: {
        target: host,
        middleware: [wpMiddleware, ...hotMiddlewares],
      },

      // no need to watch '*.js' here, webpack will take care of it for us,
      // including full page reloads if HMR won't work
      files: ['build/content/**/*.*'],
}, resolve)

গুরুত্বপূর্ণ অংশটি হ'ল proxy.target, যেখানে তারা প্রক্সি করতে চায় এমন সার্ভারের ঠিকানা সেট করে, যা HTTP: // লোকালহোস্ট: 3000 হতে পারে , এবং ব্রাউজারসাইঙ্ক http: // লোকালহস্ট: 3001 এ একটি সার্ভার শোনার শুরু করে , যেখানে উত্পন্ন সম্পদগুলি স্বয়ংক্রিয় পরিবর্তনের সাথে পরিবেশন করা হয় সনাক্তকরণ এবং গরম মডিউল প্রতিস্থাপন। আপনি দেখতে পাচ্ছেন, filesপৃথক ফাইল বা নিদর্শনগুলির সাথে অন্য একটি কনফিগারেশন সম্পত্তি রয়েছে ব্রাউজার-সিঙ্ক পরিবর্তনগুলির জন্য নজর রাখে এবং যদি কিছু ঘটে থাকে তবে ব্রাউজারটি পুনরায় লোড করে, তবে মন্তব্য হিসাবে বলেছে যে ওয়েবপ্যাক এইচএমআরের সাথে নিজেই জেএস উত্সগুলি দেখার যত্ন নেয়, তাই তারা সহযোগিতা করে আছে।

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

gulp.task('bundle', function() {
  // bundling source files with some gulp plugins like gulp-webpack maybe
});

gulp.task('start', function() {
  // starting server and stuff
});

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


3
দুর্দান্ত উত্তর! আপনি কি দয়া করে ব্রাউজারে ওয়েবপ্যাক / ব্রাউজারে পুনরায় ব্যবহার নোড মডিউলগুলি পরিচালনা করতে পারেন?
ভিবি_

4
ওয়েবপ্যাক নির্ভরতা (এক্সপোর্টড মডিউলগুলি) অবজেক্টে ইনস্টল করে (ইনস্টলডমডিউলস)। প্রতিটি মডিউল হ'ল সেই বস্তুর সম্পত্তি এবং এই জাতীয় সম্পত্তির নামটি তার আইডি উপস্থাপন করে (যেমন 1, 2, 3 ... ইত্যাদি)। যতবার আপনার উত্সে এই জাতীয় মডিউল প্রয়োজন হয়, তত্ক্ষণাত ওয়েবপ্যাকটি মডিউল আইডির সাহায্যে ফাংশন কলে রূপান্তর করে (যেমন __webpack_require __ (1)), যা মডিউল আইডি দ্বারা ইনস্টলডড মডিউলগুলিতে অনুসন্ধানের ভিত্তিতে ডান নির্ভরতা প্রদান করে ency আমি নিশ্চিত নই, ব্রাউজারফি কীভাবে এটি পরিচালনা করে।
ড্যান ম্যাক্ক

@ ড্যান স্কোডোপোল আপনি কি আরও বিস্তারিত বলতে পারবেন?
অসীম কেটি

1
আমি গুল্প বা গ্রান্টের মৌলিক ব্যবহার উপস্থাপনের সাথে একমত নই, গুগল ব্যবহার করে এই দুটি তুলনা করা সহজ, ওয়েবপ্যাক-ডেভ-সার্ভারকে প্রথমে ওয়েবপ্যাকটি বোঝার প্রয়োজন, এবং এটি এই প্রশ্ন / উত্তরের বাইরে নয়, তবে আমি উপস্থাপন করেছি কিছু ব্রাউজারসিঙ্ক কনফিগারেশন। আপনি স্টার্টার-কিটের সাথে ঠিকই আছেন, এবং আমি এটি আরও ব্যাখ্যা করেছি।
ড্যান ম্যাকেক

5
প্রতিটি নতুন প্যাকেজ ব্যবহার করা আবশ্যক (আরও) জনপ্রিয় মতামত অনুসরণ না করে বিষয়গুলি সহজ রাখতে নির্ভরতা হ্রাস করার জন্য +1!
মদনানস

675

অক্টোবর 2018 আপডেট করুন

আপনি যদি ফ্রন্ট-এন্ড ডেভ সম্পর্কে এখনও অনিশ্চিত থাকেন তবে একটি দুর্দান্ত উত্সটি এখানে তাত্ক্ষণিকভাবে দেখতে পারেন।

https://github.com/kamranahmedse/developer-roadmap

জুন 2018 আপডেট করুন

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

https://medium.com/the-node-js-collection/modern-javascript-explained-for-dinosaurs-f695e9747b70

জুলাই 2017 আপডেট করুন

2017 সালে ফ্রন্ট-এন্ড বিকাশের দিকে কীভাবে যোগাযোগ করা যায় সে সম্পর্কে সাম্প্রতিককালে গ্র্যাব টিমের একটি বিস্তৃত গাইড আমি পেয়েছি You আপনি নীচের মত এটি পরীক্ষা করে দেখতে পারেন।

https://github.com/grab/front-end-guide


আমি বেশ কিছুদিন ধরে এটিও অনুসন্ধান করছিলাম যেহেতু সেখানে প্রচুর সরঞ্জাম রয়েছে এবং সেগুলির প্রতিটি আমাদের আলাদা দিক থেকে উপকৃত করে। সম্প্রদায়টি বিভিন্ন সরঞ্জামগুলিতে বিভক্ত Browserify, Webpack, jspm, Grunt and Gulp। আপনি সম্পর্কে শুনতে পারে Yeoman or Slush। এটি আসলে কোনও সমস্যা নয়, এটি প্রত্যেকে একটি পরিষ্কার পথ বোঝার চেষ্টা করছে তাদের পক্ষে বিভ্রান্তি।

যাইহোক, আমি কিছু অবদান রাখতে চাই।

1. প্যাকেজ ম্যানেজার

প্যাকেজ পরিচালনাকারীরা প্রকল্প নির্ভরতা ইনস্টল করা ও আপডেট করা সহজ করেন, যা লাইব্রেরি যেমন:, jQuery, Bootstrapইত্যাদি - আপনার সাইটে ব্যবহৃত এবং আপনার দ্বারা লিখিত নয় এমন সমস্ত কিছুই।

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

  • NPMএর অর্থ: Node JS package managerআপনার সফ্টওয়্যার নির্ভর সমস্ত লাইব্রেরি পরিচালনা করতে আপনাকে সহায়তা করে। আপনি ডেকে আনা একটি ফাইলের মধ্যে আপনার প্রয়োজনীয়তা সংজ্ঞায়িত করে কমান্ড লাইনে package.jsonচালিত করবেন npm install... তারপরে ব্যাং, আপনার প্যাকেজগুলি ডাউনলোড হয়ে গেছে এবং ব্যবহারের জন্য প্রস্তুত। উভয় front-end and back-endগ্রন্থাগারের জন্য ব্যবহার করা যেতে পারে ।

  • Bower: ফ্রন্ট-এন্ড প্যাকেজ পরিচালনার জন্য, এনপিএমের সাথে ধারণাটি একই। আপনার সমস্ত লাইব্রেরি নামক কোনও ফাইলে সংরক্ষণ করা হয় bower.jsonএবং তারপরে bower installকমান্ড লাইনে চালিত হয়।

Bowerএবং এর মধ্যে সবচেয়ে বড় পার্থক্য 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

আবাস

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

কিছু আপডেট রয়েছে npm 3 Duplication and Deduplication, আরও বিস্তারিত জানার জন্য ডকটি খুলুন।

  • Yarn: জন্য একটি নতুন প্যাকেজ ম্যানেজার JavaScript প্রকাশিত দ্বারা Facebookসম্প্রতি তুলনায় আরো কিছু সুবিধার সঙ্গে NPM। এবং সুতোর সাহায্যে, আপনি প্যাকেজ আনতে এখনও উভয় NPMএবং Bowerরেজিস্ট্রি ব্যবহার করতে পারেন । আপনি যদি আগে কোনও প্যাকেজ ইনস্টল করেন তবে yarnএকটি ক্যাশেড অনুলিপি তৈরি করুন যা সহজ করে offline package installs

  • jspm: SystemJSগতিশীল ES6মডিউল লোডার শীর্ষে নির্মিত সর্বজনীন মডিউল লোডার জন্য একটি প্যাকেজ ম্যানেজার । এটি নিজস্ব নিয়মগুলির একটি সম্পূর্ণ নতুন প্যাকেজ ম্যানেজার নয়, বরং এটি বিদ্যমান প্যাকেজ উত্সগুলির শীর্ষে কাজ করে। বাক্সের বাইরে, এটি GitHubএবং এর সাথে কাজ করে npm। যেহেতু বেশিরভাগ Bowerভিত্তিক প্যাকেজগুলি ভিত্তিক GitHub, আমরা সেই প্যাকেজগুলিও ব্যবহার করে ইনস্টল করতে পারি jspm। এটিতে একটি রেজিস্ট্রি রয়েছে যা সহজেই ইনস্টলেশনগুলির জন্য বেশিরভাগ ব্যবহৃত ফ্রন্ট-এন্ড প্যাকেজগুলি তালিকাভুক্ত করে।

Bowerএবং এর মধ্যে পৃথকটি দেখুন jspm: প্যাকেজ পরিচালক: বোভার বনাম jspm


2. মডিউল লোডার / বান্ডিলিং

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

  • ডাউনলোডের সময়ের সমস্যাটি একক ফাইলে সাধারণ মডিউলগুলির একটি গ্রুপকে সংযুক্ত করে এবং এটিকে ছোট করে কার্যকর করা যায়।

যেমন

<head>
    <title>Wagon</title>
    <script src=“build/wagon-bundle.js”></script>
</head>
  • পারফরম্যান্স যদিও নমনীয়তার ব্যয়ে আসে। যদি আপনার মডিউলগুলির আন্ত-নির্ভরতা থাকে, তবে নমনীয়তার এই অভাবটি শোস্টোপার হতে পারে।

যেমন

<head>
    <title>Skateboard</title>
    <script src=“connectors/axle.js”></script>
    <script src=“frames/board.js”></script>
    <!-- skateboard-wheel and ball-bearing both depend on abstract-rolling-thing -->
    <script src=“rolling-things/abstract-rolling-thing.js”></script>
    <script src=“rolling-things/wheels/skateboard-wheel.js”></script>
    <!-- but if skateboard-wheel also depends on ball-bearing -->
    <!-- then having this script tag here could cause a problem -->
    <script src=“rolling-things/ball-bearing.js”></script>
    <!-- connect wheels to axle and axle to frame -->
    <script src=“vehicles/skateboard/our-sk8bd-init.js”></script>
</head>

কম্পিউটারগুলি আপনার চেয়ে ভাল এটি করতে পারে এবং সে কারণেই আপনাকে একটি সরঞ্জাম নিজেরাই সব কিছু একক ফাইলে বান্ডিল করার জন্য ব্যবহার করা উচিত।

তারপর আমরা শুনেছি সম্পর্কে RequireJS, Browserify, WebpackএবংSystemJS

  • RequireJS: একটি JavaScriptফাইল এবং মডিউল লোডার। এটি ব্রাউজারে ব্যবহারের জন্য অনুকূলিত হয়েছে, তবে এটি অন্যান্য জাভাস্ক্রিপ্ট পরিবেশে যেমন ব্যবহার করা যেতে পারে Node

যেমন: myModule.js

// package/lib is a dependency we require
define(["package/lib"], function (lib) {

    // behavior for our module
    function foo() {
        lib.log( "hello world!" );
    }

    // export (expose) foo to other modules as foobar
    return {
        foobar: foo
    }
});

ইন main.js, আমরা myModule.jsনির্ভরতা হিসাবে আমদানি করতে এবং এটি ব্যবহার করতে পারি।

require(["package/myModule"], function(myModule) {
    myModule.foobar();
});

এবং তারপরে আমাদের মধ্যে HTML, আমরা ব্যবহারটি উল্লেখ করতে পারি RequireJS

<script src=“app/require.js data-main=“main.js ></script>

সহজেই বোঝার জন্য CommonJSএবং আরও পড়ুন AMDকমনজেএস, এএমডি এবং প্রয়োজনীয় জেএসের মধ্যে সম্পর্ক?

  • Browserify: CommonJSব্রাউজারে ফর্ম্যাট করা মডিউলগুলি ব্যবহারের অনুমতি দেওয়ার জন্য সেট আউট । ফলস্বরূপ, Browserifyমডিউল বান্ডেলারের মতো কোনও মডিউল লোডার নয়: Browserifyপুরোপুরি একটি বিল্ড-টাইম সরঞ্জাম, কোডের একটি বান্ডিল উত্পাদন করে যা ক্লায়েন্ট-সাইড লোড করা যায়।

নোড এবং এনপিএম ইনস্টল করা একটি বিল্ড মেশিন দিয়ে শুরু করুন এবং প্যাকেজটি পান:

npm install -g save-dev browserify

CommonJSবিন্যাসে আপনার মডিউল লিখুন

//entry-point.js
var foo = require('../foo.js');
console.log(foo(4));

এবং খুশি হলে, বান্ডিল করতে আদেশটি জারি করুন:

browserify entry-point.js -o bundle-name.js

ব্রাউজরিফাই পুনরাবৃত্তভাবে এন্ট্রি-পয়েন্টের সমস্ত নির্ভরতা খুঁজে পায় এবং তাদের একটি একক ফাইলে সংযুক্ত করে:

<script src=”bundle-name.js”></script>
  • Webpack: এটি JavaScriptচিত্র, সিএসএস এবং আরও অনেকগুলি সহ আপনার স্থিতিশীল সম্পদের একটি একক ফাইলে বান্ডিল করে । এটি আপনাকে বিভিন্ন ধরণের লোডারগুলির মাধ্যমে ফাইলগুলি প্রক্রিয়া করতে সক্ষম করে। আপনি আপনার বা মডিউলগুলি সিনট্যাক্স JavaScriptসহ লিখতে পারেন । এটি মৌলিকভাবে আরও সংহত ও মতামতপূর্ণভাবে বিল্ড সমস্যাকে আক্রমণ করে। ইন আপনি ব্যবহার এবং কাজ শেষ করার জন্য রূপান্তরগুলির এবং প্লাগইনগুলির একটি দীর্ঘ তালিকা। বাক্সের বাইরে পর্যাপ্ত শক্তি সরবরাহ করে যা আপনার সাধারণত প্রয়োজন হয় না বা মোটেও হয় না।CommonJSAMDBrowserifyGulp/GruntWebpackGruntGulp

বেসিক ব্যবহার সহজ is ব্রাউজরিফির মতো ওয়েবপ্যাক ইনস্টল করুন:

npm install -g save-dev webpack

এবং কমান্ডটি একটি এন্ট্রি পয়েন্ট এবং একটি আউটপুট ফাইলটি পাস করুন:

webpack ./entry-point.js bundle-name.js
  • SystemJS: একটি মডিউল লোডার যা বর্তমানে ব্যবহৃত জনপ্রিয় ফর্ম্যাটের যে কোনওটিতে রান সময়ে মডিউল আমদানি করতে পারে ( CommonJS, UMD, AMD, ES6)। এটি ES6মডিউল লোডার পলিফিলের শীর্ষে নির্মিত এবং ব্যবহৃত ফর্ম্যাটটি সনাক্ত করতে এবং এটি যথাযথভাবে পরিচালনা করতে যথেষ্ট স্মার্ট। SystemJSএছাড়াও ES6 কোড ( Babelবা এর সাথে Traceur) বা অন্যান্য ভাষা যেমন প্লাগইনগুলি ব্যবহার করে TypeScriptএবং CoffeeScriptব্যবহার করতে পারে transp

node moduleএটি কী এবং কেন এটি ব্রাউজারে ভালভাবে মানিয়ে যায় না তা জানতে চান ।

আরও দরকারী নিবন্ধ:


কেন jspmএবং SystemJS?

প্রধান লক্ষ্য এক ES6modularity এর এটি ইনস্টল করা অত্যন্ত সহজ করতে এবং ইন্টারনেটে যে কোন জায়গা থেকে কোন JavaScript লাইব্রেরি ব্যবহার করবেন (হয় Github, npmইত্যাদি)। শুধুমাত্র দুটি জিনিস প্রয়োজন:

  • লাইব্রেরি ইনস্টল করার জন্য একটি একক কমান্ড
  • লাইব্রেরিটি আমদানি করতে এবং এটি ব্যবহারের জন্য কোডের একক লাইন

সুতরাং jspm, আপনি এটি করতে পারেন।

  1. কমান্ড সহ গ্রন্থাগারটি ইনস্টল করুন: jspm install jquery
  2. কোডের একক লাইন সহ গ্রন্থাগারটি আমদানি করুন, আপনার HTML ফাইলের অভ্যন্তরে বাহ্যিক রেফারেন্সের প্রয়োজন নেই।

display.js

var $ = require('jquery'); 

$('body').append("I've imported jQuery!");
  1. তারপরে আপনি System.config({ ... })নিজের মডিউলটি আমদানি করার আগে এই জিনিসগুলি কনফিগার করুন। সাধারণত চালানোর সময় jspm init, config.jsএই উদ্দেশ্যে একটি ফাইল থাকবে ।

  2. এই স্ক্রিপ্টগুলি চালিত করতে, আমাদের HTML পৃষ্ঠাতে system.jsএবং লোড করা দরকার config.js। এর পরে আমরা মডিউল লোডার display.jsব্যবহার করে ফাইলটি লোড করব SystemJS

index.html

<script src="jspm_packages/system.js"></script>
<script src="config.js"></script>
<script>
  System.import("scripts/display.js");
</script>

উল্লেখযোগ্য: আপনি ব্যবহার করতে পারেন npmসঙ্গে Webpackযেমন কৌণিক 2 তা প্রয়োগ করা হয়েছে। যেহেতু jspmএটির সাথে সংহত করার জন্য বিকাশ করা হয়েছিল SystemJSএবং এটি বিদ্যমান npmউত্সের শীর্ষে কাজ করে , সুতরাং আপনার উত্তর আপনার উপর নির্ভর করবে।


3. কার্য রানার

টাস্ক রানার এবং বিল্ড টুলস মূলত কমান্ড-লাইন সরঞ্জাম। কেন আমাদের সেগুলি ব্যবহার করতে হবে: এক কথায়: অটোমেশনমিনিফিকেশন, সংকলন, ইউনিট টেস্টিং, লেটিংয়ের পুনরাবৃত্তির কাজগুলি সম্পাদন করার সময় আপনার যত কম কাজ করতে হবে যা কমান্ড লাইনের সাথে এমনকি ম্যানুয়ালি করার আগে আমাদের অনেক সময় ব্যয় করে।

  • Grunt: আপনি প্রাক-প্রক্রিয়া কোডগুলি করতে আপনার বিকাশের পরিবেশের জন্য অটোমেশন তৈরি করতে পারেন বা কোনও কনফিগার ফাইল দিয়ে বিল্ড স্ক্রিপ্ট তৈরি করতে পারেন এবং জটিল কোনও কাজ পরিচালনা করা খুব কঠিন বলে মনে হয়। গত কয়েক বছরে জনপ্রিয়।

প্রতিটি কাজ Gruntহ'ল বিভিন্ন প্লাগইন কনফিগারেশনের একটি অ্যারে, যা কেবল একের পর এক নির্বাহ করা হয়, কঠোরভাবে স্বাধীন এবং ক্রমবর্ধমান ফ্যাশনে।

grunt.initConfig({
  clean: {
    src: ['build/app.js', 'build/vendor.js']
  },

  copy: {
    files: [{
      src: 'build/app.js',
      dest: 'build/dist/app.js'
    }]
  }

  concat: {
    'build/app.js': ['build/vendors.js', 'build/app.js']
  }

  // ... other task configurations ...

});

grunt.registerTask('build', ['clean', 'bower', 'browserify', 'concat', 'copy']);
  • Gulp: অটোমেশন ঠিক যেমন Gruntতবে কনফিগারেশনের পরিবর্তে, আপনি JavaScriptনোড অ্যাপ্লিকেশনের মতো স্ট্রিম দিয়ে লিখতে পারেন । এই দিনগুলিকে পছন্দ করুন।

এটি একটি Gulpনমুনা টাস্কের ঘোষণা।

//import the necessary gulp plugins
var gulp = require('gulp');
var sass = require('gulp-sass');
var minifyCss = require('gulp-minify-css');
var rename = require('gulp-rename');

//declare the task
gulp.task('sass', function(done) {
  gulp.src('./scss/ionic.app.scss')
    .pipe(sass())
    .pipe(gulp.dest('./www/css/'))
    .pipe(minifyCss({
      keepSpecialComments: 0
    }))
    .pipe(rename({ extname: '.min.css' }))
    .pipe(gulp.dest('./www/css/'))
    .on('end', done);
});

আরও দেখুন: https://medium.com/@preslavrachev/gulp-vs-grunt-why-one-why-the-other-f5d3b398edc4#.fte0nahri


৪. স্ক্যাফোল্ডিং সরঞ্জাম

  • Slush and Yeoman: আপনি তাদের সাথে স্টার্টার প্রকল্পগুলি তৈরি করতে পারেন। উদাহরণস্বরূপ, আপনি এইচটিএমএল এবং এসসিএসএস দিয়ে একটি প্রোটোটাইপ তৈরির পরিকল্পনা করছেন, তারপরে ম্যানুয়ালি পরিবর্তে স্ক্যাস, সিএসএস, আইএমজি, ফন্টের মতো কিছু ফোল্ডার তৈরি করুন। আপনি কেবল yeomanএকটি সাধারণ স্ক্রিপ্ট ইনস্টল এবং চালাতে পারেন । তাহলে এখানে আপনার জন্য সবকিছু।

এখানে আরও সন্ধান করুন

npm install -g yo
npm install --global generator-h5bp
yo h5bp

আরও দেখুন: https://www.quora.com/What-are-the-differences-between-NPM-Bower-Grunt-Gulp-Webpack- ব্রাউজারিফি- স্লুশ- Yeoman- এবং- এক্সপ্রেস


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


64

ঠিক আছে, তারা সবাই কিছুটা মিল পেয়েছে, তারা আপনার জন্য বিভিন্ন এবং অনুরূপ উপায়ে একই কাজ করে, আমি তাদের নীচের মত 3 টি প্রধান গ্রুপে ভাগ করেছি :


1) মডিউল বান্ডার

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

webpack

ওয়েবপ্যাক হ'ল আধুনিক জাভাস্ক্রিপ্ট অ্যাপ্লিকেশনগুলির জন্য একটি মডিউল বান্ডেলার। ওয়েবপ্যাকটি যখন আপনার অ্যাপ্লিকেশনটি প্রক্রিয়া করে, এটি পুনরাবৃত্তভাবে নির্ভরতা গ্রাফ তৈরি করে যা আপনার অ্যাপ্লিকেশনটির প্রয়োজনীয় প্রতিটি মডিউল অন্তর্ভুক্ত করে, তারপরে ব্রাউজার দ্বারা লোড হওয়ার জন্য mod সমস্ত মডিউলগুলিকে অল্প সংখ্যক বান্ডেলে প্যাকেজ করে।

এটি অবিশ্বাস্যরূপে কনফিগারযোগ্য, তবে শুরু করতে আপনাকে কেবল ফোর কোর কনসেপ্টগুলি বুঝতে হবে: প্রবেশ, আউটপুট, লোডার এবং প্লাগইন।

এই নথিটি এই ধারণাগুলির একটি উচ্চ-স্তরের ওভারভিউ দেওয়ার উদ্দেশ্যে করা হয়েছে, যখন নির্দিষ্ট ধারণা সম্পর্কিত ব্যবহারের ক্ষেত্রে লিঙ্ক সরবরাহ করে।

আরও এখানে

browserify

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

আরও এখানে


2) টাস্ক রানার্স

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

গ্রাস

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

আরও এখানে

ঘোঁৎ ঘোঁৎ

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

আরও এখানে


3) প্যাকেজ পরিচালক

প্যাকেজ পরিচালনাকারীরা, আপনার অ্যাপ্লিকেশনটিতে আপনার প্রয়োজনীয় প্লাগইন পরিচালনা এবং প্যাকেজ.জসন ব্যবহার করে গিথুব ইত্যাদির মাধ্যমে আপনার জন্য এটি ইনস্টল করা যা আপনার মডিউলগুলি আপডেট করার জন্য, সেগুলি ইনস্টল করার জন্য এবং আপনার অ্যাপ্লিকেশন জুড়ে আপনার অ্যাপ্লিকেশন ভাগ করে নেওয়া, প্রতিটিটির জন্য আরও বিশদ:

npm

এনএমপি জাভাস্ক্রিপ্ট প্রোগ্রামিং ভাষার জন্য একটি প্যাকেজ পরিচালক manager এটি জাভাস্ক্রিপ্ট রানটাইম এনভায়রনমেন্ট নোড.জেএস এর জন্য ডিফল্ট প্যাকেজ ম্যানেজার is এটিতে একটি কমান্ড লাইন ক্লায়েন্ট থাকে, যাকে এনপিএমও বলা হয় এবং সার্বজনীন প্যাকেজের একটি অনলাইন ডাটাবেস, যাকে এনপিএম রেজিস্ট্রি বলা হয়। রেজিস্ট্রি ক্লায়েন্টের মাধ্যমে অ্যাক্সেস করা যায় এবং উপলভ্য প্যাকেজগুলি এনএমপি ওয়েবসাইটের মাধ্যমে ব্রাউজ এবং অনুসন্ধান করা যায়।

আরও এখানে

আবাস

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

আরও এখানে

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

সুতা

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

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

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

আরও এখানে



গুল্প প্লাগইনগুলির একটি তালিকা আছে? সত্যিই কি 1000+ আছে? এনপিএম কেবল 20 বা তাই ফেরত দেয়?
ফ্লার্বিয়াস

1
দুর্দান্ত সংক্ষিপ্তসার। একটি আধুনিক ওয়েব বিকাশ সম্পর্কে যে কোনও আলোচনার জন্য একটি এন্ট্রি পয়েন্ট হওয়া উচিত।
অ্যাডাম বুবেলা

1
@ ফ্লুরবিয়াস হ্যাঁ, এখানে: gulpjs.com/plugins । বর্তমানে 3,465 গুল্প প্লাগইন রয়েছে বলে মনে হচ্ছে।
এমটিএস

52

আপনি এনপিএম কম্পিউটারে কিছু প্রযুক্তিগত তুলনা খুঁজে পেতে পারেন

ব্রাউজারফ্রি বনাম গ্রান্ট বনাম গুল্প বনাম ওয়েবপ্যাকের সাথে তুলনা করা

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

তাই অন্যগুলির মধ্যে একটি বেছে নেওয়ার প্রয়োজন হলে আমি গুলপের সাথে যাব


5
ওয়েবপ্যাকটি এখন 26k গিথুব থেকে শুরু হয় এবং 25.7k দিয়ে টানছে। জনপ্রিয়তা ফ্যাক্টরটি আর সিদ্ধান্ত নেওয়ার জন্য ব্যবহার করতে পারবেন না ...
রায়ে রোড


14

ওয়েবপ্যাক এবং ওয়েবপ্যাক-ডেভ সার্ভার কী? অফিসিয়াল ডকুমেন্টেশন বলছে এটি একটি মডিউল বান্ডেলার তবে আমার কাছে এটি কেবল একটি টাস্ক রানার। পার্থক্য কি?

ওয়েবপ্যাক-ডেভ-সার্ভার হ'ল একটি লাইভ পুনরায় লোডিং ওয়েব সার্ভার যা ওয়েবপ্যাক বিকাশকারীরা তারা যা করে তা তাত্ক্ষণিক প্রতিক্রিয়া পেতে ব্যবহার করে। এটি শুধুমাত্র উন্নয়নের সময় ব্যবহার করা উচিত।

এই প্রকল্পটি ভারীভাবে nof5 ইউনিট পরীক্ষার সরঞ্জাম দ্বারা অনুপ্রাণিত ।

Webpack নামের একটি তৈরি করবে বোঝা একক প্যাক জন্য বয়স ওয়েব । প্যাকেজটি হ্রাস করা হবে এবং একটি একক ফাইলে সংযুক্ত করা হবে (আমরা এখনও HTTP 1.1 বয়সে থাকি)। Webpack সম্পদগুলি (জাভাস্ক্রিপ্ট, সিএসএস, চিত্র) মিশ্রন এবং সেগুলিকে এই মত ইনজেকশনের জাদু আছে: <script src="assets/bundle.js"></script>

একে মডিউল বান্ডিলারও বলা যেতে পারে কারণ এটি মডিউল নির্ভরতা বুঝতে হবে এবং কীভাবে নির্ভরতাগুলি ধরে নিতে এবং সেগুলি একসাথে বান্ডিল করতে পারে।

আপনি কোথায় ব্রাউজারিফাই ব্যবহার করবেন? নোড / ইএস 6 আমদানি করে আমরা কি একই কাজটি করতে পারি না?

আপনি ওয়েবপ্যাক যেখানে ব্যবহার করবেন ঠিক সেই একই কাজগুলিতে আপনি ব্রাউজারফি ব্যবহার করতে পারেন । - যদিও ওয়েবপ্যাকটি আরও কমপ্যাক্ট।

লক্ষ্য করুন ES6 মডিউল লোডার বৈশিষ্ট্য মধ্যে Webpack2 ব্যবহার করছেন System.import , যা না স্থানীয়ভাবে একটি একক ব্রাউজার সমর্থন করে।

আপনি কখন এনএমপি + প্লাগইনগুলিতে গুল্প / গ্রুর্ট ব্যবহার করবেন?

আপনি গুল্প, গ্রান্ট, ব্রোকলি, ব্রাঞ্চ এবং বোরকে ভুলে যেতে পারেন । পরিবর্তে সরাসরি এনপিএম কমান্ড লাইন স্ক্রিপ্ট ব্যবহার করুন এবং আপনি গুলপের জন্য এখানে অতিরিক্ত প্যাকেজগুলি মুছে ফেলতে পারেন :

var gulp        = require('gulp'),
  minifyCSS     = require('gulp-minify-css'),
  sass          = require('gulp-sass'),
  browserify    = require('gulp-browserify'),
  uglify        = require('gulp-uglify'),
  rename        = require('gulp-rename'),
  jshint        = require('gulp-jshint'),
  jshintStyle   = require('jshint-stylish'),
  replace       = require('gulp-replace'),
  notify        = require('gulp-notify'),

আপনার প্রকল্পের জন্য কনফিগার ফাইল তৈরি করার সময় আপনি সম্ভবত গুল্প এবং গ্রান্ট কনফিগারেশন ফাইল জেনারেটর ব্যবহার করতে পারেন । এইভাবে আপনার ইয়েমেন বা অনুরূপ সরঞ্জাম ইনস্টল করার দরকার নেই ।


14

সুতা হ'ল একটি সাম্প্রতিক প্যাকেজ ম্যানেজার যা সম্ভবত উল্লেখ করার উপযুক্ত।
সুতরাং, এটি এখানে: https://yarnpkg.com/

আমি যতদূর জানি এটি এনপিএম এবং বোর নির্ভরতা উভয়ই পেতে পারে এবং অন্যান্য প্রশংসিত বৈশিষ্ট্য রয়েছে।


12

Webpackএকটি বান্ডলার ভালো লেগেছে Browserfyএটা মডিউল অনুরোধ (জন্য কোডবেস দেখায় requireবা import) এবং তাদের সমাধান করা যাও recursively। আরও কী, আপনি Webpackজাভাস্ক্রিপ্ট-জাতীয় মডিউলগুলিই নয়, সিএসএস, চিত্র, এইচটিএমএল, আক্ষরিক সবকিছুই সমাধান করার জন্য কনফিগার করতে পারেন । বিশেষত যা সম্পর্কে আমাকে উত্সাহিত করে Webpack, আপনি একই অ্যাপ্লিকেশনে সংকলিত এবং গতিশীল লোড উভয় মডিউলকে একত্রিত করতে পারেন। এইভাবে একটি বাস্তব কর্মক্ষমতা বৃদ্ধি পায়, বিশেষত HTTP / 1.x উপর। আপনি ঠিক কীভাবে এটি করেন আমি উদাহরণগুলির সাথে এখানে বর্ণনা করেছি http://dsheiko.com/weblog/state-of-javascript-modules-2017/ বান্ডিলারের বিকল্প হিসাবে যে কেউ ভাবতে পারেন Rollup.js( https://rolupjs.org/ ) , যা সংকলনের সময় কোডটি অনুকূলিত করে, তবে সমস্ত পাওয়া অব্যবহৃত খণ্ডগুলি সরিয়ে দেয়।

এর AMDপরিবর্তে, এর পরিবর্তে RequireJSএকজন ES2016 module systemনেটিভের সাথে যেতে পারেন তবে লোড হওয়া System.js( https://github.com/systemjs/systemjs )

তদ্ব্যতীত, আমি এটি উল্লেখ করব যে npmপ্রায়শই gruntবা এর মতো একটি স্বয়ংক্রিয় সরঞ্জাম হিসাবে ব্যবহৃত হয় gulp। পরীক্ষা করে দেখুন https://docs.npmjs.com/misc/scripts । আমি ব্যক্তিগতভাবে এখন এনপিএম স্ক্রিপ্টগুলি দিয়ে কেবল অন্যান্য অটোমেশন সরঞ্জামগুলি এড়িয়ে চলে যাই, যদিও আগে আমি খুব বেশি ছিলাম grunt। অন্যান্য সরঞ্জামগুলির সাথে আপনাকে প্যাকেজগুলির জন্য অসংখ্য প্লাগইনগুলির উপর নির্ভর করতে হবে, যা প্রায়শই ভাল লেখা হয় না এবং সক্রিয়ভাবে রক্ষণাবেক্ষণ করা হয় না। npmএর প্যাকেজগুলি জানেন, সুতরাং আপনি স্থানীয়ভাবে ইনস্টল হওয়া যে কোনও প্যাকেজটির নাম হিসাবে কল করুন:

{
  "scripts": {
    "start": "npm http-server"
  },
  "devDependencies": {
    "http-server": "^0.10.0"
  }
}

আসলে একটি নিয়ম হিসাবে আপনার কোনও প্লাগইন লাগবে না যদি প্যাকেজটি সিএলআই সমর্থন করে।

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