মূলঃ npm vs npx — What’s the Difference?, লেখকঃ Carol-Theodor Pelu

আপনি যদি কখনও Node.js ব্যবহার করে থাকেন, তাহলে আপনি অবশ্যই npm ব্যবহার করেছেন।

npm (node package manager) হল সেই dependency/package ম্যানেজার যা আপনি Node.js ইনস্টল করার সময় পাবেন। এটি ডেভেলপারদের জন্য globally এবং locally প্যাকেজ ইনস্টল করার সুবিধা প্রদান করে।

কখনও কখনও আপনি একটি নির্দিষ্ট প্যাকেজ একটু ঘেঁটে দেখার জন্য কিছু কমান্ড চালিয়ে দেখতে চাইতে পারেন। কিন্তু আপনি আপনার local node_modules ফোল্ডারে প্যাকেজটি ইনস্টল না করে এটি করতে পারবেন না।

এসব ক্ষেত্রেই npx কাজে আসে।

এই আর্টিকেলে, আমরা npm এবং npx মধ্যে পার্থক্যগুলি দেখবো এবং কিভাবে এদের ব্যবহার করা যায় তা জানবো।

প্রথমে, আসুন npm আসলে কী এবং আমরা এটি দিয়ে কী করতে পারি তা দেখা যাক।

এই আর্টিকেলের পাশাপাশি আপনি যদি এই বিষয়ে একটি ভিডিও দেখতে চান তাহলে এই ভিডিওটি দেখতে পারেনঃ

প্যাকেজ ম্যানেজার npm

npm আসলে একাধিক কাজ করে। প্রথমত, এটি ওপেন সোর্স Node.js প্রোজেক্ট প্রকাশের জন্য একটি অনলাইন রিপোজিটরি।

দ্বিতীয়ত, এটি একটি CLI টুল যা আপনাকে সেই প্যাকেজগুলি ইনস্টল করতে এবং তাদের versions এবং dependency ম্যানেজ করতে সহায়তা করে। npm-এ হাজার হাজার Node.js লাইব্রেরি ও অ্যাপ্লিকেশন রয়েছে এবং প্রতিদিন আরও অনেক কিছু যুক্ত হচ্ছে।

npm নিজে কোন প্যাকেজ চালায় না। আপনি যদি npm ব্যবহার করে একটি প্যাকেজ চালাতে চান, তাহলে আপনাকে অবশ্যই সেই প্যাকেজটি আপনার package.json ফাইলে উল্লেখ করতে হবে।

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

  • local ইনস্টলের ক্ষেত্রে ./node_modules/.bin/ ডাইরেক্টরিতে লিঙ্ক তৈরি হয়।
  • global ইন্সটল এর ক্ষেত্রে global bin/ ডাইরেক্টরিতে (উদাহরণ স্বরূপঃ উইন্ডোজে %AppData%/npm এবং লিনাক্সে /usr/local/bin) লিঙ্ক তৈরি হয়।

npm এর সাহায্যে একটি প্যাকেজ চালানোর জন্য আপনাকে হয় তার local path টাইপ করতে হবে, যেমনঃ

$ ./node_modules/.bin/your-package

অথবা আপনার package.json ফাইলের scripts সেকশনে যুক্ত করার মাধ্যমেও লোকাল প্যাকেজ চালাতে পারেন, যেমনঃ

"name": "your-application",
"version": "1.0.0",
    "scripts": {
        "your-package": "your-package"
    }
}

এখন আপনি npm run ব্যবহার করে স্ক্রিপ্টটি চালাতে পারেনঃ

npm run your-package

যেমনটা আপনি দেখতে পাচ্ছেন, npm ব্যবহার করে কোন স্ক্রিপ্ট চালাতে বেশ খানিকটা ঝামেলা পোহাতে হয়।

সৌভাগ্যবশত, npx আমাদের অবস্থাকে অনেকখানি সহজ করে দেয়।

প্যাকেজ রানার npx

npm ভার্শন 5.2.0 থেকে, npm এর সাথে npx প্রি-বান্ডেল করা করা থাকে।

npx হল একটি CLI টুল যার উদ্দেশ্য হল npm রেজিস্ট্রিতে হোস্ট করা dependency ইনস্টল এবং ম্যানেজ করাকে সহজ করে তোলা।

এর সাহায্যে যেকোন ধরণের Node.js ভিত্তিক এক্সিকিউটেবল চালানো খুব সহজ যেটি আপনি সাধারণত npm এর মাধ্যমে ইনস্টল করবেন।

এটি আপনার বর্তমান npm ইন্সটলেশন এর সাথে ইতিমধ্যে ইনস্টল হয়ে আছে কিনা তা দেখতে, আপনি নিম্নলিখিত কমান্ডটি চালাতে পারেন:

$ which npx

যদি npx ইন্সটল করা না থাকে তাহলে আপনি নিম্নোক্ত কমান্ডের মাধ্যমে তা ইন্সটল করে নিতে পারেনঃ

$ npm install -g npx

ঠিকঠাক মতো ইন্সটল হয়ে গেলে এবার আমরা npx এর কিছু ব্যবহার সম্পর্কে জানবো।

সহজেই locally installed প্যাকেজ চালানো

আপনি যদি locally ইনস্টল করা একটি প্যাকেজ চালাতে চান তবে আপনাকে যা করতে হবে তা হলঃ

$ npx your-package

<command> বা <package> $PATH অথবা local প্রজেক্ট বাইনারিগুলির মধ্যে আছে কিনা তা npx পরীক্ষা করে দেখবে, এবং যদি থাকে তাহলে কমান্ড বা প্যাকেজটি চালাবে।

আগে থেকে ইন্সটল করা নেই এমন প্যাকেজ চালানো

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

চলুন পরীক্ষা করে দেখা যাকঃ

$ npx cowsay wow	
npm-vs-npx

এটি দুর্দান্ত কারণ কখনও কখনও আপনি কেবল কিছু CLI টুলস চালিয় দেখতে চাইতে পারেন তাদের globally ইনসটল না করে।

এর ফলে আপনি কিছু ডিস্ক স্পেস বাঁচাতে পারবেন এবং আপনার গ্লোবাল ভ্যারিয়েবলে অপ্রয়োজনীয় কিছু থাকবে না।

সরাসরি গিটহাব থেকে কোড চালানো

github-run-code

আপনি চাইলে npx ব্যবহার করে যেকোন GitHub gist এবং রিপোজিটরি চালাতে পারেন। যেহেতু gist চালানো তুলনামূলকভাবে সহজ, সেটাই করা যাক।

সবচেয়ে মৌলিক যে স্ক্রিপ্টটি বানানো সম্ভব সেটিতে একটি মূল js ফাইল এবং একটি package.json ফাইল থাকবে। আপনি ফাইলগুলি সেট আপ করার পরে, আপনাকে যা করতে হবে তা হল উপরের ছবিতে দেখানো সেই gist লিঙ্ক সহ npx চালান।

এখানে উদাহরণে ব্যবহৃত কোডটি আপনি খুঁজে পেতে পারেন।

যে কোন কোড চালানোর আগে সেটি ভাল করে পড়ে নিন যেন ক্ষতিকারক কোড চালিয়ে আপনার সিস্টেমের কোন ক্ষতি না হয়ে যায়।

আলাদা আলাদা প্যাকেজ ভার্শন টেস্ট করা

npx দিয়ে Node.js প্যাকেজ বা মডিউলের বিভিন্ন ভার্শন পরীক্ষা করা অত্যন্ত সহজ। এই ফিচারটি পরীক্ষা করার জন্য, আমরা locally create-react-app প্যাকেজটি ইনস্টল করতে যাচ্ছি এবং একটি upcoming version পরীক্ষা করতে যাচ্ছি।

নিম্নোক্ত কমান্ডটি আউটপুটের শেষের দিকে কিছু dist ট্যাগ দেখাবে। dist ট্যাগগুলি ভার্শন নম্বরগুলির alias হিসেবে কাজ করে।

$ npm v create-react-app
create-react-app-dist-tags

চলুন এবার npx ব্যবহার করে create-react-app এর next dist ট্যাগটি পরীক্ষা করা যাক। এই কমান্ডটি একটি স্যান্ডবক্স ডাইরেক্টরি তৈরি করবে।

$ npx create-react-app@next sandbox

npx অস্থায়ীভাবে create-react-app এর next ভার্শনটি ইন্সটল করে সেটিকে ব্যবহার করে স্যান্ডবক্স ডাইরেক্টরির ভেতরের অ্যাপলিকেশনটি তৈরি করবে।

একবার ইনস্টল হয়ে গেলে, আমরা নিম্নোক্ত কমান্ড ব্যবহার করে অ্যাপটিতে নেভিগেট করতে পারিঃ

$ cd sandbox

এবং তারপর এই কমান্ড দিয়ে এটি অ্যাপটি চালু করতে পারিঃ

$ npm start
create-react-app-npx-next-version

এটি স্বয়ংক্রিয়ভাবে আপনার ডিফল্ট ব্রাউজার উইন্ডোতে React অ্যাপটি খুলবে।

এখন আমাদের কাছে একটি অ্যাপ রয়েছে যা create-react-app প্যাকেজের next ভার্শনে চলে!

react-app

উপসংহার

npx আমাদের versioning, dependency সঙ্ক্রান্ত সমস্যা এবং অপ্রয়োজনীয় প্যাকেজ ইনস্টল এড়াতে সহায়তা করে।

এটি আমাদের প্যাকেজ, কমান্ড, মডিউল, এমনকি GitHub gist এবং রিপজিটরি চালানোর একটি সহজ উপায়ও দেয়।

আপনি আগে npx ব্যবহার না করে থাকলে, এখনই শুরু করতে পারেন!

এটি মূলত আমার ব্লগে পোস্ট করা হয়েছিল।

আপনি টুইটার এবং ফেসবুক-এ আমার সাথে যোগাযোগ করতে পারেন এবং যেকোনো কিছু জিজ্ঞাসা করতে পারেন।