এনপিএক্স এবং এনপিএম এর মধ্যে পার্থক্য?


516

আমি সবেমাত্র প্রতিক্রিয়া শিখতে শুরু করেছি এবং ফেসবুক নিম্নলিখিত প্রস্তুতির প্রকল্পটি সরবরাহ করে প্রাথমিক সেটআপটি সহজতর করতে সহায়তা করে ।

যদি কঙ্কাল প্রকল্পটি ইনস্টল করতে হয় তবে আমাকে npx create-react-app my-appকমান্ড-লাইনে টাইপ করতে হবে ।

আমি ভাবছিলাম গিথুব এর npx create-react-app my-appচেয়ে ফেসবুক কেন npm create-react-app my-app?


23
create-react-appএকটি জেনারেটর। ইন্টারনেটেnpx যায় , প্যাকেজটি অস্থায়ীভাবে ডাউনলোড করে যাতে এটি কার্যকর করতে পারে ( এনপি এক্স )। আপনি যা পান (এবং চান) তা আউটপুট, যা স্থানীয়ভাবে সংরক্ষণ করা হয়, যেখানে আপনি কমান্ডটি চালিত করেছিলেন।
vsync

উত্তর:


642

এনপিএক্স প্রবর্তন করা হচ্ছে: একটি এনপিএম প্যাকেজ রানার

NPM- প্যাকেজ পরিচালনা করে তবে জীবনকে কার্যকর করা সহজ করে না ।
NPX- নোড প্যাকেজ চালানোর জন্য একটি সরঞ্জাম ।

NPXNPMসংস্করণ সঙ্গে বান্ডিল আসে5.2+

NPMনিজেই কোনও প্যাকেজ চালায় না। এটি আসলে কোনও প্যাকেজ চালায় না। আপনি যদি এনপিএম ব্যবহার করে কোনও প্যাকেজ চালাতে চান তবে আপনাকে অবশ্যই আপনার package.jsonফাইলটিতে সেই প্যাকেজটি নির্দিষ্ট করতে হবে ।

যখন এক্সিকিউটেবলগুলি এনপিএম প্যাকেজগুলির মাধ্যমে ইনস্টল করা হয়, তখন এনপিএম তাদের সাথে লিঙ্ক করে:

  1. স্থানীয় ইনস্টলগুলির ./node_modules/.bin/ডিরেক্টরিতে "লিঙ্কগুলি" তৈরি করা আছে ।
  2. গ্লোবাল ইনস্টলগুলির লিনাক্সে বা উইন্ডোজে বৈশ্বিক bin/ডিরেক্টরি (যেমন /usr/local/bin) থেকে তৈরি "লিঙ্কগুলি" রয়েছে %AppData%/npm

ডকুমেন্টেশন আপনার পড়া উচিত


NPM:

কেউ কোনও নির্দিষ্ট প্রকল্পে স্থানীয়ভাবে একটি প্যাকেজ ইনস্টল করতে পারে:

npm install some-package

এখন ধরা যাক আপনি চান নোডজেএস কমান্ড লাইন থেকে সেই প্যাকেজটি কার্যকর করতে:

$ some-package

উপরের ব্যর্থ হবে । কেবলমাত্র বিশ্বব্যাপী ইনস্টল করা প্যাকেজগুলি কেবল তাদের নাম টাইপ করে সম্পাদন করা যেতে পারে ।

এটি ঠিক করতে এবং এটি চালনার জন্য আপনাকে অবশ্যই স্থানীয় পাথ টাইপ করতে হবে:

$ ./node_modules/.bin/some-package

আপনি নিজের packages.jsonফাইল সম্পাদনা করে এবং সেই প্যাকেজটি scriptsবিভাগটিতে যুক্ত করে প্রযুক্তিগতভাবে স্থানীয়ভাবে ইনস্টল করা প্যাকেজ চালাতে পারেন :

{
  "name": "whatever",
  "version": "1.0.0",
  "scripts": {
    "some-package": "some-package"
  }
}

তারপরে স্ক্রিপ্টটি চালনা করুন npm run-script(বা npm run):

npm run some-package

NPX:

npxস্থানীয় প্রকল্প বাইনারিগুলির মধ্যে <command>রয়েছে কিনা তা যাচাই করে তা $PATHকার্যকর করবে ute সুতরাং, উপরের উদাহরণস্বরূপ, আপনি যদি স্থানীয়ভাবে ইনস্টল হওয়া প্যাকেজটি সম্পাদন করতে চান তবে আপনার some-packageটাইপ করুন:

npx some-package

এর আর একটি বড় সুবিধা npxহ'ল এমন প্যাকেজ চালানোর ক্ষমতা যা আগে ইনস্টল করা হয়নি:

$ npx create-react-app my-app

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


সম্পর্কিত প্রশ্নাবলী:

  1. নোড_মডিউলগুলিতে স্থানীয়ভাবে ইনস্টল করা প্যাকেজটি কীভাবে ব্যবহার করবেন?
  2. এনপিএম: কীভাবে সোর্স করবেন? / নোড_মডিউলস / বিিন ফোল্ডারটি?
  3. কীভাবে আপনি এনপিএম স্ক্রিপ্ট ব্যবহার করে একটি জেএস ফাইল চালাবেন?

2
তাই node.jsডান ব্যবহার না , প্রতিক্রিয়া ? কেন এটি 'এনএমপি' (নোড প্যাকেজ ম্যানেজার) এর মাধ্যমে উপলব্ধ?
উইঙ্কলারr

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

1
@ রেকুয়েঙ্কো জোনস - আপনি ওপি
ভিএসএনসি

1
হ্যাঁ, আমি @winklerrr উল্লেখ করতে ভুলে গেছি, আমি তার মন্তব্য ভাষণ দিচ্ছিলেন
RecuencoJones

1
আমি মনে করি সবচেয়ে কার্যকর বৈশিষ্ট্যটি হ'ল এনপিএক্স প্যাকেজটি ইনস্টল করা হয়েছে যখন এটি ইনস্টল করা হয়নি। অন্যথায় ./node_modules/.binআপনার AT PATH এবং NPX এ যুক্ত করুন প্রয়োজন হয় না।
রন ই

78

এনপিএক্স হ'ল একটি এনপিএম প্যাকেজ রানার (এক্স সম্ভবত এক্সেক্সট) stands সাধারণ ব্যবহারটি হল অস্থায়ীভাবে বা পরীক্ষার জন্য একটি প্যাকেজ ডাউনলোড এবং চালানো।

create-react-app হ'ল একটি এনপিএম প্যাকেজ যা প্রত্যাশা করা হয় কেবল একবার প্রকল্পের লাইফসাইলে একবার চালানো হবে। সুতরাং, এটি একক পদক্ষেপে ইনস্টল করতে এবং চালাতে এনপিএক্স ব্যবহার করা পছন্দ করা হয়।

ম্যান পেজে https://www.npmjs.com/package/npx-তে উল্লিখিত হিসাবে , এনপিএক্স PATH বা ডিফল্টরূপে নোড_মডিউল / .bin থেকে কমান্ড চালাতে পারে।

দ্রষ্টব্য: কিছু খননের মাধ্যমে আমরা খুঁজে পেতে পারি যে নোড পরিবেশের মধ্যে কার্যকর করা একটি জাভাস্ক্রিপ্ট ফাইল (সম্ভবত /usr/lib/node_modules/create-react-app/index.js টু নোড পরিবেশে) ক্রিয়েট-রি্যাক্ট-অ্যাপটি পয়েন্ট করতে পারে । এটি কেবলমাত্র একটি বৈশ্বিক সরঞ্জাম যা কিছু পরীক্ষা করে। আসল সেটআপটি প্রতিক্রিয়া-স্ক্রিপ্টগুলির দ্বারা সম্পন্ন হয়, যার সর্বশেষ সংস্করণটি প্রকল্পে ইনস্টল করা আছে। পড়ুন https://github.com/facebook/create-react-app আরও তথ্যের জন্য।


2
সাধারণ ব্যবহারটি ইতিমধ্যে স্থানীয়ভাবে বা বিশ্বব্যাপী ইনস্টল করা সংস্করণটি প্যাকেজ ডাউনলোড ও চালানোর জন্য চালানোর জন্য প্রায়শই ব্যবহৃত হয়।

69

এনপিএম হ'ল প্যাকেজ ম্যানেজার, আপনি এনপিএম ব্যবহার করে নোড.জেএস প্যাকেজ ইনস্টল করতে পারেন

এনপিএক্স হ'ল নোড.জেএস প্যাকেজগুলি কার্যকর করার একটি সরঞ্জাম।

আপনি যে প্যাকেজটি বিশ্বব্যাপী বা স্থানীয়ভাবে ইনস্টল করেছেন তা বিবেচ্য নয়। এনপিএক্স এটি অস্থায়ীভাবে ইনস্টল করে চালাবে। আপনি যদি প্যাকেজ.জসোন ফাইলটি কনফিগার করে স্ক্রিপ্ট বিভাগে অন্তর্ভুক্ত করেন তবে এনপিএম প্যাকেজগুলিও চালাতে পারে।

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

এনপি এম - ম্যানেজার

এনপি এক্স - এক্সিকিউট - মনে রাখা সহজ


সংক্ষিপ্ত এবং স্পষ্ট ব্যাখ্যা
বারে সার্কান একিন

আমি যে লম্বা ব্লগগুলি দিয়েছি তার চেয়ে অনেক ভাল।
মোহন গুন্ডলাপল্লী

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

49

NPX:

Https://www.futurehosting.com/blog/npx-makes-Live-easier-for-node-developers-plus-node-vulnerability- News / থেকে :

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

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

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

সমস্যাটি এনপিএক্স সমাধান করে। এনপিএম 5.2, এনপিএক্স-এ অন্তর্ভুক্ত একটি নতুন সরঞ্জাম হ'ল একটি ছোট্ট ইউটিলিটি যা কোনও প্রকল্পের মধ্যে থেকে ডেকে এলে সঠিক অ্যাপ্লিকেশনটি চালানোর পক্ষে যথেষ্ট স্মার্ট।

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

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

আপনি যদি কোনও স্পিনের জন্য এনপিএক্স নিতে চান তবে এনপিএমের অতি সাম্প্রতিক সংস্করণে আপডেট করুন।


আপনি যদি এনভিএম-উইন্ডোজ ব্যবহার করছেন তবে সম্ভবত এনপিএমের সাথে এনপিএক্স পাবেন না, তবে এটি নিজেই ইনস্টল করা দরকার! npm আই-জি এনপিএক্স
নীল

1
NPM can just install local versions- সঠিক না. npmগ্লোবাল ইনস্টল করতে পারেন এবং এটি একটি সাধারণ অনুশীলন।
vsync

1
NPX একটি বড় ভূমিকা এখানে পাওয়া যেতে পারে: medium.com/@maybekatz/... , ক্যাট Marchán দ্বারা।
জেফ হু

1
@vsync আমি বিশ্বাস করি এটির ব্যাখ্যা করা উচিত "এনপিএম কেবল স্থানীয় সংস্করণ ইনস্টল করতে পারে এবং আপনি যেতে ভাল।" বরং একটি সীমাবদ্ধতা বোঝানো।
ইয়েপইপ

37

npx কোনও প্যাকেজটি স্পষ্টভাবে ইনস্টল না করে কমান্ড চালায়।

ব্যবহারের ক্ষেত্রে:

  • আপনি বিশ্বজুড়ে বা স্থানীয়ভাবে প্যাকেজ ইনস্টল করতে চান না।
  • আপনার কাছে এটি বিশ্বব্যাপী ইনস্টল করার অনুমতি নেই।
  • কিছু কমান্ড পরীক্ষা করতে চান।

বাক্য গঠন:

npx [options] [-p|--package <package>] <command> [command-arg]...

প্যাকেজ optionচ্ছিক:

npx   -p uglify-js         uglifyjs --output app.min.js app.js common.js
      +----------------+   +--------------------------------------------+
      package (optional)   command, followed by arguments

উদাহরণ স্বরূপ:

Start a HTTP Server      : npx http-server
Lint code                : npx eslint ./src
                         # Run uglifyjs command in the package uglify-js
Minify JS                : npx -p uglify-js uglifyjs -o app.min.js app.js common.js
Minify CSS               : npx clean-css-cli -o style.min.css css/bootstrap.css style.css
Minify HTML              : npx html-minifier index-2.html -o index.html --remove-comments --collapse-whitespace
Scan for open ports      : npx evilscan 192.168.1.10 --port=10-9999
Cast video to Chromecast : npx castnow http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerFun.mp4

সম্পর্কে আরও command:


18

সাধারণ সংজ্ঞা:

এনপিএম - জাভাস্ক্রিপ্ট প্যাকেজ ম্যানেজার

npx - এনপিএম প্যাকেজ বাইনারিগুলি কার্যকর করুন


7

এখানে কর্মে এনপিএক্সের একটি উদাহরণ রয়েছে: এনপিএক্স গায়েস হ্যালো

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

অন্যান্য উত্তরে উল্লিখিত হিসাবে, এনপিএক্স প্যাকেজটি ইনস্টল করার প্রয়োজন পরে (এনপিএম সহ) চালানোর আগে কনফিগার করা প্রয়োজন এমন ক্ষেত্রেও খুব দরকারী। উদাহরণস্বরূপ, jpm.package ফাইলটি কনফিগার করার জন্য এনপিএম ব্যবহার না করে কনফিগার করা রান কমান্ডটি কল করুন তার পরিবর্তে এনপিএক্স ব্যবহার করুন। একটি বাস্তব উদাহরণ: এনপিএক্স তৈরি-প্রতিক্রিয়া-অ্যাপ্লিকেশন আমার অ্যাপ্লিকেশন


3
এটি কোথায় এটি ইনস্টল করে এবং কমান্ডটি শেষ হওয়ার পরে এটি এটি সরিয়ে দেয়, বা এটি দীর্ঘ সময়ের জন্য এটি ক্যাশে করে দেয় বা সর্বদা আপনার প্যাকেজের সর্বশেষতম সংস্করণ রয়েছে কিনা তা পরীক্ষা করে দেখুন?
redOctober13

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