গ্রান্ট, এনপিএম এবং বওয়ার (প্যাকেজ.জসন বনাম বওয়ার.জসন) এর মধ্যে পার্থক্য


612

আমি এনএমপি এবং বোর ব্যবহার করে, এমবারজে আমার প্রথম অ্যাপ্লিকেশন তৈরি করতে নতুন :)
আমার রেলের সাথে কিছুটা অভিজ্ঞতা আছে, তাই তালিকা নির্ভরতা (যেমন বান্ডার জেমফাইলে) তালিকাভুক্তির জন্য ফাইলগুলির ধারণার সাথে আমি পরিচিত familiar

প্রশ্ন: আমি যখন কোনও প্যাকেজ যুক্ত করতে চাই (এবং গিটারের মধ্যে নির্ভরতা পরীক্ষা করে দেখি) তবে এটি কোথায় package.jsonবা এর মধ্যে অন্তর্ভুক্ত bower.json?

আমি যা সংগ্রহ করি তা থেকে
দৌড়ানো bower installপ্যাকেজটি আনবে এবং এটি /vendorডিরেক্টরিতে রাখবে , এটি
চালানো npm installএটিকে আনবে এবং এটি /node_modulesডিরেক্টরিতে স্থাপন করবে ।

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

স্বজ্ঞাতভাবে আমি এটি অনুমান করব

  1. এনপিএম ইনস্টল --save-dev প্যাকেজ-নামটি আমার প্যাকেজ.জসনে প্যাকেজ-নাম যুক্ত করার সমতুল্য

  2. বওয়ার ইনস্টল - সেভ প্যাকেজ-নামটি কি আমার বওয়ার.জসনে প্যাকেজ যুক্ত এবং চালিত বোভার ইনস্টল হিসাবে একই হতে পারে ?

যদি এটি হয় তবে আমি কখনই প্যাকেজগুলি স্পষ্টভাবে ইনস্টল করব যেগুলি নির্ভরতা পরিচালিত করে (বিশ্বব্যাপী কমান্ড লাইন সরঞ্জামগুলি ইনস্টল করা বাদ দিয়ে) ফাইলটিতে যুক্ত না করে exp



14
@ সিন্ডারসোরাস এই সঠিক সদৃশ নয়। এই পোস্টে পাশাপাশি যুক্ত অতিরিক্ত প্রশ্ন রয়েছে। বিটিডাব্লু ডাউন ডাউনকে বোঝাতে আপনার কি আপত্তি আছে?
sachinjain024

1
আপনি কি গ্রহণযোগ্য উত্তর পরিবর্তন করেছেন? দেখে মনে হয় যে ২০১৪ সালের উচ্চতর আপডোভেটেড একটি ২০১ 2016 সালের গ্রহণিত চেয়ে আলাদা কিছু বলছে it এটি আরও ব্যাখ্যা করে কেন এটি অন্য পদ্ধতির পরামর্শ দেয়, তাই আমি এটির সাথে শান্ত। এটি কিছুটা অবাক হয়েছে যে এটি গৃহীত হয়েছে (বা পুনরায় স্বীকৃত)।

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

উত্তর:


154

মধ্য 2016 এর জন্য আপডেট :

জিনিসগুলি এত দ্রুত পরিবর্তিত হচ্ছে যে 2017 এর দেরী হলে এই উত্তরটি আর আপ টু ডেট না হতে পারে!

প্রাথমিক সরঞ্জামগুলি বিল্ডিংয়ের সরঞ্জাম এবং কর্মপ্রবাহের পছন্দগুলিতে দ্রুত হারিয়ে যেতে পারে, তবে 2016 এর মধ্যে সবচেয়ে বেশি যা বওয়ার, গ্রান্ট বা গুল্প ব্যবহার করছে না! ওয়েবপ্যাকের সাহায্যে আপনি সরাসরি এনপিএম-এ সবকিছু করতে পারেন!

আমাকে ভুল লোকেরা অন্য কর্মপ্রবাহগুলি ব্যবহার করবেন না এবং আমি এখনও আমার উত্তরাধিকার প্রকল্পে GULP ব্যবহার করি (তবে আস্তে আস্তে এটি সরিয়ে চলেছি), তবে এই ওয়ার্কফ্লোতে কাজ করা সেরা সংস্থাগুলি এবং বিকাশকারীরা প্রচুর অর্থোপার্জন করে!

এই টেমপ্লেটটি দেখুন এটি সেরা এবং সর্বশেষ প্রযুক্তির সংমিশ্রণে একটি খুব আপ টু ডেট সেটআপ: https://github.com/coryhouse/react-slingshot

  • Webpack
  • এনপিএম একটি বিল্ড টুল হিসাবে (কোনও গাল্প, গ্রান্ট বা বোর নেই)
  • Redux সঙ্গে প্রতিক্রিয়া
  • ESLint
  • তালিকাটি দীর্ঘ। যাও এবং অনুসন্ধান করুন!

তোমার প্রশ্নগুলো:

যখন আমি কোনও প্যাকেজ যুক্ত করতে চাই (এবং গিটের উপর নির্ভরতা পরীক্ষা করে দেখি), এটি কোথায় - প্যাকেজ.জসনে বা বোভার.জসনে

  • সবকিছু এখন প্যাকেজ.জসনে অন্তর্ভুক্ত

  • নির্মাণের জন্য নির্ভরতাগুলি "ডিভডিপেন্ডেন্সিগুলি" অর্থাৎ ie npm install require-dir --save-dev (- সেভ-ডেভ আপনার প্যাকেজ আপডেট করে dev

  • রানটাইমের সময় আপনার অ্যাপ্লিকেশনটির জন্য প্রয়োজনীয় নির্ভরতাগুলি "নির্ভরশীলতা" অর্থাত্ npm install lodash --save(- সাশ্রয় করে আপনার প্যাকেজ আপডেট করে j জেসন নির্ভরতার সাথে একটি এন্ট্রি যুক্ত করে)

যদি এটি হয় তবে আমি কখনই প্যাকেজগুলি স্পষ্টভাবে ইনস্টল করব যেগুলি নির্ভরতা পরিচালিত করে (বিশ্বব্যাপী কমান্ড লাইন সরঞ্জামগুলি ইনস্টল করা বাদ দিয়ে) ফাইলটিতে যুক্ত না করে exp

সর্বদা । শুধু আরামের কারণে। আপনি যখন একটি পতাকা যুক্ত করেন ( --save-devবা --save) যে ফাইলগুলি Deps (প্যাকেজ.জসন) পরিচালনা করে তা স্বয়ংক্রিয়ভাবে আপডেট হয়। ম্যানুয়ালি এতে নির্ভরতা সম্পাদনা করে সময় নষ্ট করবেন না। শর্টকাট npm install --save-dev package-nameহ'ল npm i -D package-nameএবং শর্টকাট npm install --save package-nameহ'লnpm i -S package-name


6
আপনার উত্তরটি খুব মতামতযুক্ত:> With help of Webpack you can do everything directly in NPM! এটি সত্য নয়, একজনকে তার কর্মপ্রবাহে এমনকি ওয়েবপ্যাকের প্রয়োজন নেই
আগস্টিন রিডিংগার

26
এই উত্তরটি অনেক অনুমান করে চলেছে বলে মনে হচ্ছে। প্রশ্নটি এনপিএম এবং বোওয়ারের মধ্যে পার্থক্য জিজ্ঞাসা করছে এবং এই উত্তরটি কোনও কারণে ওয়েবপ্যাকের উল্লেখ করছে। হ্যাঁ, ওয়েবপ্যাকটি এটি করার একটি উপায়, তবে এই উত্তরটি দেখে মনে হচ্ছে এটি করার একমাত্র এবং সঠিক উপায়। উদাহরণস্বরূপ, যদি কেউ পলিমার ১.x এর সাথে কাজ করে থাকে তবে স্ট্যান্ডার্ড ওয়ার্কফ্লো বোর ব্যবহার করবে এবং ওয়েবপ্যাকের জন্য খুব বেশি সমর্থন নেই।
জন পাওয়ার

1
উত্তরটি আসলে প্রাসঙ্গিক, তবে যুক্তিটি প্রকৃতপক্ষে দেওয়া হয়নি: "তবে এটি এটি কীভাবে হয়ে গেছে" - ভাল, কিছুই সম্ভবত করা উচিত নয় কারণ এটি সম্ভবত আপাতভাবে সম্পন্ন হওয়ার কথা (যেমন অন্যরাও করেছেন) done কাজের প্রবাহের যুক্তির সাথে অর্থের কোনও যোগসূত্র নেই।
forsberg

3
2017 সালে এই উত্তরটি খুঁজছেন document ডকুমেন্টেশনে যাচ্ছেন: "ওয়েবপ্যাক ভি 1 নষ্ট হয়েছে We আমরা সমস্ত বিকাশকারীকে ওয়েবপ্যাক আপগ্রেড করতে উত্সাহিত করি 2. আরও তথ্যের জন্য আমাদের মাইগ্রেশন গাইডটি অনুসরণ করুন বা ওয়েবপ্যাক 2 ডকুমেন্টেশন দেখুন refer" হাহা ক্লাসিক ওয়েব বিকাশ।
ব্যবহারকারী 643011

1
@ ব্যবহারকারীর 643011 আপনি যখন মাইগ্রেশন গাইডটি দেখুন তখন আপনি লক্ষ্য করবেন যে বেশিরভাগ কনফিগারেশন একইরকম থাকে এবং বাকীগুলি কেবল কনফিগার কাঠামোর প্রসাধনী পরিবর্তন। আমি পিআর সহ এক বিকেলে মাইগ্রেশন করেছি
পাভেল

576

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

এটিকে আরও বিভ্রান্তিকর করে তোলে এমন একটি বিষয় হ'ল এনপিএম কিছু প্যাকেজ সরবরাহ করে যা ফ্রন্ট-এন্ড ডেভেলপমেন্টেও ব্যবহার করা যেতে পারে যেমন, gruntএবংjshint

এই লাইনগুলি আরও অর্থ যুক্ত করে

বোর, এনপিএম এর বিপরীতে, একাধিক ফাইল থাকতে পারে (যেমন .js, .css, .html, .png, .ttf) যা প্রধান ফাইল (গুলি) হিসাবে বিবেচিত হয়। বোরার এই মূল ফাইলগুলিকে শব্দার্থভাবে বিবেচনা করে, যখন একত্রে প্যাকেজ করা হয়, তখন একটি উপাদান।

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

  1. কিছু ফাইল জিপ করা হচ্ছে (যেমন জিপআপ প্লাগইন)
  2. জেএস ফাইলগুলিতে আবদ্ধকরণ (jshint)
  3. কম ফাইল সংকলন (গ্রান্ট-অবদান-কম)

সাস সংকলনের জন্য গ্রুর্ট প্লাগইন রয়েছে, আপনার জাভাস্ক্রিপ্টটিকে কমাতে, ফাইল / ফোল্ডারগুলি অনুলিপি করতে, জাভাস্ক্রিপ্ট মিনিফাইং করা ইত্যাদি

অনুগ্রহ করে নোট করুন যে গ্রান্ট প্লাগইন এছাড়াও একটি এনপিএম প্যাকেজ।

প্রশ্ন 1

যখন আমি কোনও প্যাকেজ যুক্ত করতে চাই (এবং গিটের উপর নির্ভরতা পরীক্ষা করে দেখি), এটি কোথায় - প্যাকেজ.জসনে বা বোভার.জসনে

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

প্রশ্ন-2

নির্ভরতা পরিচালনা করে এমন ফাইলটিতে আমি যুক্ত না করে কখনই প্যাকেজগুলি স্পষ্টভাবে ইনস্টল করব should

আপনি প্যাকেজগুলি সুস্পষ্টভাবে ইনস্টল করছেন বা .json ফাইলে নির্ভরতার উল্লেখ করছেন কিনা তা বিবেচ্য নয়। ধরুন আপনি নোড প্রকল্পে কাজ করছেন এবং আপনার অন্য একটি প্রকল্পের প্রয়োজন আছে, বলুন request, তারপরে আপনার দুটি বিকল্প রয়েছে:

  • Package.json ফাইল সম্পাদনা করুন এবং 'অনুরোধ' এর উপর নির্ভরতা যুক্ত করুন
  • এনপিএম ইনস্টল

অথবা

  • কমান্ডলাইন ব্যবহার করুন: npm install --save request

--saveবিকল্পগুলি প্যাকেজ.জসন ফাইলের সাথে নির্ভরতাও যুক্ত করে। আপনি যদি --saveবিকল্পটি নির্দিষ্ট না করেন তবে এটি কেবল প্যাকেজটি ডাউনলোড করবে তবে জসন ফাইলটি প্রভাবিত হবে না।

আপনি যে কোনও উপায়ে এটি করতে পারেন, যথেষ্ট পার্থক্য থাকবে না।


3
স্পষ্টির জন্য এবং নিবন্ধটির জন্য ধন্যবাদ! অন্তর্দৃষ্টিপূর্ণ এবং পার্থক্যটি স্পষ্ট করে (যেখানে নির্ভরতা কোথায় রাখবেন তা সিদ্ধান্ত নিতে সহায়তা করা উচিত)। আমি অপেক্ষা করব কিনা সম্ভবত শেষ প্রশ্নটির জন্য কেউ আঁকিয়ে উঠবে (পুনরায়: আমি কখনই স্বতন্ত্রভাবে প্যাকেজ ইনস্টল করতে চাই), এবং আপনার উত্তরটি পরে মেনে নেব :)
শিক্ষানবিশ

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

15
এনওয়ার কি পারছে না?
অ্যাডাম সোফার

1
নোট করুন যে jQuery প্লাগইন সংগ্রহস্থল ( plugins.jquery.com ) npm দ্বারা প্রতিস্থাপন করা হয়েছে।
thrdan

2
সর্বশেষতম কুইকস্টার্ট কৌণিক 2 (আরসি) টিউটোরিয়াল এবং গিট বীজ npmকেবলমাত্র ভি 1 টি টিউটোরিয়ালের বিপরীতে ব্যবহৃত হয় যা এনএমপি এবং বোভার উভয়ই ব্যবহার করে। আমি সত্যই সত্যটি সত্যই পছন্দ করি যে (ক) package.jsonএকমাত্র রক্ষণাবেক্ষণ করা জিনিস, (খ) এটি একটি লাইনারে পুনরাবৃত্তভাবে নির্ভরতাগুলি গণনা করে npm installএবং (সি) যখন কোনও সমস্যা হয় তখন আপনাকে কেবল node_modulesফোল্ডারটি মুছতে হবে এবং এনপিএম ইনস্টল চালাতে হবে আবার।
সেবাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.