npm: মৌলিক বিষয়, React Native এবং Node.js এর জন্য প্যাকেজ ম্যানেজার

লেখক: IT Sectr প্রকাশিত: 2026-02-13 পড়ার সময়: 10 মিনিট

npm (Node Package Manager) হল Node.js প্ল্যাটফর্মের জন্য স্ট্যান্ডার্ড প্যাকেজ ম্যানেজার, যা Node.js ইনস্টলেশনের সাথে অন্তর্ভুক্ত। npm JavaScript এবং TypeScript প্রকল্পের নির্ভরশীলতা পরিচালনা করে: লাইব্রেরি ইনস্টল করে node_modules-এ, প্যাকেজ সংস্করণ আপডেট করে, সংস্করণ দ্বন্দ্ব সমাধান করে। package.json হল মেটাডেটা এবং নির্ভরশীলতার তালিকা সহ কেন্দ্রীয় কনফিগারেশন ফাইল। npm Registry হল সবচেয়ে বড় প্যাকেজ রেজিস্ট্রি। আরও জানুন npm Registry-এ।

মূল বিষয়

  • npm — Node.js এর স্ট্যান্ডার্ড প্যাকেজ ম্যানেজার, Node.js এর সাথে সংস্করণ 0.6.3 থেকে অন্তর্ভুক্ত
  • package.json — নির্ভরশীলতা, স্ক্রিপ্ট এবং মেটাডেটা সহ প্রকল্প কনফিগারেশন ফাইল
  • npm install — node_modules ফোল্ডারে package.json থেকে নির্ভরশীলতা ইনস্টল করার মৌলিক কমান্ড
  • package-lock.json — সব পরিবেশে পুনরুৎপাদনযোগ্য ইনস্টলেশনের জন্য নির্ভুল সংস্করণ লক ফাইল
  • npm ci — CI/CD কমান্ড যা লক ফাইল আপডেট না করে সেটি থেকে কঠোরভাবে প্যাকেজ ইনস্টল করে

npm কী — Node.js প্যাকেজ ম্যানেজার?

npm 2010 সালে Isaac Schlueter দ্বারা Node.js নির্ভরশীলতা ব্যবস্থাপনার সমাধান হিসেবে তৈরি করা হয়েছিল। 2014 সাল থেকে npm, Inc. দ্বারা npm পরিচালিত হচ্ছে, যা 2020 সালে Microsoft/GitHub দ্বারা অধিগ্রহণ করা হয়েছিল। টুলটি দুটি অংশ নিয়ে গঠিত: CLI (কমান্ড লাইন) প্যাকেজ ইনস্টল এবং পরিচালনার জন্য, এবং Registry — registry.npmjs.org-এ সব প্রকাশিত মডিউলের কেন্দ্রীয় ভান্ডার।

npm Registry হল সবচেয়ে বড় প্যাকেজ রেজিস্ট্রি: ২ মিলিয়নের বেশি প্যাকেজ এবং মাসিক ১০ বিলিয়নের বেশি ডাউনলোড। প্রতিটি প্যাকেজের একটি SemVer সংস্করণ, বিবরণ, নির্ভরশীলতা, লাইসেন্স এবং লেখকত্ব রয়েছে। আপনার নিজের প্যাকেজ প্রকাশ করা হয় npm publish-এর মাধ্যমে। npm সংস্থাগুলির জন্য স্কোপড প্যাকেজ (@scope/package), প্রাইভেট রেজিস্ট্রি এবং বিল্ট-ইন নিরাপত্তা অডিট সমর্থন করে।

Node.js সংস্করণ 18+ উন্নত পারফরম্যান্স সহ npm 9+, মনোরিপোর জন্য ওয়ার্কস্পেস এবং পুনর্নির্মিত পিয়ার নির্ভরশীলতা প্রক্রিয়া অন্তর্ভুক্ত করে। npm ইকোসিস্টেম সার্ভার-সাইড JavaScript, ফ্রন্টএন্ড (React, Vue, Angular), মোবাইল ডেভেলপমেন্ট (React Native), বিল্ড টুল (Webpack, Vite) এবং CLI ইউটিলিটি কভার করে। npm হল JavaScript লাইব্রেরি বিতরণের প্রাথমিক চ্যানেল।

npm এর প্রধান বৈশিষ্ট্য

npm install — প্রধান কমান্ড যা সব নির্ভরশীলতা node_modules-এ ইনস্টল করতে package.json এবং package-lock.json পড়ে। প্রথম রানে, npm নির্ভরশীলতা গ্রাফ গণনা করে, সংস্করণ দ্বন্দ্ব সমাধান করে এবং package-lock.json জেনারেট করে। npm install <package> কমান্ড একটি নির্দিষ্ট প্যাকেজ ইনস্টল করে; --save-dev ফ্ল্যাগ এটি devDependencies-এ যোগ করে, --global গ্লোবালি ইনস্টল করে।

npx — npm সংস্করণ 5.2 থেকে অন্তর্ভুক্ত একটি প্যাকেজ রানার। npx গ্লোবাল ইনস্টলেশন ছাড়াই CLI ইউটিলিটি চালানোর অনুমতি দেয়: npx react-native init বা npx create-react-app my-app। npx প্যাকেজটি অস্থায়ী ক্যাশে ডাউনলোড করে, চালায় এবং শেষে পরিষ্কার করে। নির্দিষ্ট টুল সংস্করণ চালানোর জন্যও npx উপযোগী।

npm audit npm ডাটাবেস থেকে পরিচিত দুর্বলতার জন্য নির্ভরশীলতা ট্রি স্ক্যান করে। কমান্ডটি গুরুত্ব স্তর (ক্রিটিক্যাল, হাই, মডারেট) সহ একটি রিপোর্ট আউটপুট করে এবং দুর্বল প্যাকেজগুলি স্বয়ংক্রিয়ভাবে আপডেট করতে npm audit fix সুপারিশ করে। npm cache ডাউনলোড করা প্যাকেজগুলি স্থানীয়ভাবে সংরক্ষণ করে। npm cache clean --force ইনস্টলেশন সমস্যায় ক্যাশে পরিষ্কার করে। npm outdated পুরানো প্যাকেজ দেখায়।

bash
# npm মৌলিক কমান্ড
$ npm install
$ npm install react-native-webview --save
$ npm install typescript --save-dev
# গ্লোবাল ইনস্টলেশন ছাড়া চালানো
$ npx react-native init MyApp
# নিরাপত্তা অডিট
$ npm audit --fix

package.json গঠন এবং নির্ভরশীলতা ব্যবস্থাপনা

package.json হল প্রকল্প রুটে একটি JSON ফাইল যা এর মেটাডেটা, নির্ভরশীলতা এবং কনফিগারেশন বর্ণনা করে। বাধ্যতামূলক ফিল্ড: name (অনন্য প্যাকেজ নাম) এবং version (SemVer সংস্করণ, যেমন 1.0.0)। ফাইলটি দ্রুত আরম্ভের জন্য npm init -y দিয়ে বা ম্যানুয়ালি তৈরি করা হয়।

Semantic Versioning (SemVer) হলো MAJOR.MINOR.PATCH ফরম্যাটে একটি সংস্করণ মান। মেজর সংস্করণ অসামঞ্জস্যপূর্ণ API পরিবর্তনে পরিবর্তিত হয়, মাইনর — কার্যকারিতা যোগ করলে (পশ্চাদমুখী সামঞ্জস্যপূর্ণ), প্যাচ — বাগ ফিক্সে। সংস্করণের আগে ^ চিহ্ন মাইনর এবং প্যাচ আপডেটের অনুমতি দেয়, ~ শুধুমাত্র প্যাচ আপডেটের অনুমতি দেয়।

json
{
  "name": "my-app",
  "version": "1.0.0",
  "private": true,
  "scripts": {
    "start": "expo start",
    "android": "expo start --android",
    "ios": "expo start --ios"
  },
  "dependencies": {
    "react": "^18.3.0",
    "react-native": "^0.76.0"
  },
  "devDependencies": {
    "typescript": "^5.5.0",
    "@types/react": "^18.3.0"
  }
}
ফিল্ডউদ্দেশ্যউদাহরণ মান
scriptsnpm run-এর জন্য কমান্ড চালান"start": "node index.js"
dependenciesঅ্যাপ্লিকেশনের প্রোডাকশন নির্ভরশীলতা"react": "^18.3.0"
devDependenciesডেভেলপমেন্ট এবং টেস্টিং টুল"jest": "^29.7.0"
peerDependenciesলাইব্রেরির জন্য হোস্ট নির্ভরশীলতা"react": ">=17.0.0"
enginesNode.js সংস্করণ প্রয়োজনীয়তা{"node": ">=18.0.0"}

React Native ডেভেলপমেন্টে npm

React Native প্রকল্পগুলি নির্ভরশীলতা ব্যবস্থাপনার জন্য সক্রিয়ভাবে npm ব্যবহার করে। স্ট্যান্ডার্ড সেটে react, react-native, নেভিগেশন লাইব্রেরি (React Navigation), HTTP লাইব্রেরি (axios), স্টেট ম্যানেজমেন্ট (Redux, Zustand) এবং UI কম্পোনেন্ট অন্তর্ভুক্ত। npm রেজিস্ট্রি থেকে হাজার হাজার সামঞ্জস্যপূর্ণ প্যাকেজ ইনস্টল করার অনুমতি দেয়।

npx pod-install — iOS-এর জন্য React Native-এ নেটিভ মডিউল ইনস্টল করার পরে একটি বাধ্যতামূলক কমান্ড। npm স্বয়ংক্রিয়ভাবে package-lock.json-এর উপর ভিত্তি করে Podfile.lock জেনারেট করে। Expo প্রকল্পে npm install-এর পরিবর্তে expo install ব্যবহার করা হয়, কারণ এটি বর্তমান Expo SDK সংস্করণের সাথে সামঞ্জস্যপূর্ণ সংস্করণ নির্বাচন করে।

সংস্করণ দ্বন্দ্ব React Native-এ একটি সাধারণ সমস্যা: react-native-reanimated, react-native-gesture-handler এবং react-native-safe-area-context-এর সংযুক্ত সংস্করণ প্রয়োজন। সমাধান হল সব প্যাকেজ সর্বশেষ সামঞ্জস্যপূর্ণ সংস্করণে আপডেট করা বা --legacy-peer-deps ব্যবহার করা। CocoaPods এবং Gradle-এর মাধ্যমে কম্পাইল করা নেটিভ মডিউলের জন্য package-lock.json গুরুত্বপূর্ণ।

npm এর বিকল্প ম্যানেজারদের সাথে তুলনা

npm হল Node.js-এর সাথে অন্তর্ভুক্ত স্ট্যান্ডার্ড প্যাকেজ ম্যানেজার। প্রধান বিকল্পগুলি: yarn (2016 সালে Facebook দ্বারা তৈরি) এবং pnpm (দ্রুত, হার্ড লিঙ্ক সহ)। npm 5 থেকে, npm এবং yarn-এর মধ্যে গতি এবং কার্যকারিতার পার্থক্য ন্যূনতম। npm 7+ ওয়ার্কস্পেস যোগ করেছে, যা একে মনোরিপোর জন্য প্রতিযোগিতামূলক করে তোলে।

বৈশিষ্ট্যnpmyarnpnpm
সৃষ্টির বছর201020162017
লক ফাইলpackage-lock.jsonyarn.lockpnpm-lock.yaml
ইনস্টলেশনসিকোয়েন্সিয়াল (npm 5+)সমান্তরালসমান্তরাল
ডিস্ক স্থানস্ট্যান্ডার্ডস্ট্যান্ডার্ডসর্বনিম্ন (লিঙ্ক)
Workspacesহ্যাঁ (npm 7+)হ্যাঁহ্যাঁ
Plug'n'Playনাহ্যাঁনা

State of JS 2025 অনুযায়ী: ৬২% ডেভেলপার npm ব্যবহার করেন, ৩৫% yarn (মূলত পুরানো প্রকল্প এবং PnP উত্সাহী), এবং ৩% pnpm ব্যবহার করেন। React Native প্রকল্পের জন্য, উভয় টুলই সমানভাবে কার্যকর, কিন্তু npm বেশি সাধারণ Expo SDK 50+ এবং নতুন React Native আরম্ভকরণে।

yarn অত্যন্ত বড় মনোরিপোতে (১০০+ প্যাকেজ) এর আরও পরিপক্ক ওয়ার্কস্পেস বাস্তবায়ন এবং Plug'n'Play-এর কারণে সুবিধা ধরে রেখেছে। pnpm গ্লোবাল স্টোরে হার্ড লিঙ্কের মাধ্যমে ডিস্ক স্থান সাশ্রয়ে জয়ী হয়। ম্যানেজার নির্বাচন দলের পছন্দ এবং অবকাঠামোর উপর নির্ভর করে।

সচরাচর জিজ্ঞাসা

npm install এবং npm ci-এর মধ্যে পার্থক্য কী?

npm install package-lock.json আপডেট করে এবং সিম্যান্টিক রেঞ্জের মধ্যে নতুন মাইনর সংস্করণ ইনস্টল করতে পারে। npm ci (Clean Install) node_modules মুছে ফেলে এবং package-lock.json থেকে কঠোরভাবে প্যাকেজ ইনস্টল করে তা আপডেট না করেই। npm ci দ্রুততর, CI/CD-তে ব্যবহৃত হয় এবং সব মেশিনে অভিন্ন পরিবেশ নিশ্চিত করে। package-lock.json অনুপস্থিত থাকলে, npm ci ত্রুটি দেয়।

npm-এ পিয়ার নির্ভরশীলতা দ্বন্দ্ব কীভাবে ঠিক করবেন?

npm 7 থেকে, পিয়ার নির্ভরশীলতা দ্বন্দ্ব বিল্ড ত্রুটি সৃষ্টি করে। সমাধান: npm update-এর মাধ্যমে সব প্যাকেজ সামঞ্জস্যপূর্ণ সংস্করণে আপডেট করুন, npm 6 মোডের জন্য --legacy-peer-deps ফ্ল্যাগ ব্যবহার করুন, অথবা একটি নির্দিষ্ট প্যাকেজের সংস্করণ বাধ্য করতে package.json-এ overrides বিভাগ যোগ করুন। সর্বোত্তম বিকল্প হল নির্ভরশীলতাগুলি সামঞ্জস্যপূর্ণ সংস্করণে আপডেট করা।

npm audit কী এবং কেন এটি প্রয়োজন?

npm audit npm Security Advisory ডাটাবেস থেকে পরিচিত দুর্বলতার জন্য নির্ভরশীলতা ট্রি স্ক্যান করে। কমান্ডটি গুরুত্ব স্তর (ক্রিটিক্যাল, হাই, মডারেট, লো) সহ একটি রিপোর্ট আউটপুট করে এবং দুর্বল প্যাকেজগুলি নিরাপদ সংস্করণে স্বয়ংক্রিয়ভাবে আপডেট করতে npm audit fix সুপারিশ করে। নিয়মিত npm audit চালানো JavaScript প্রকল্পের জন্য একটি মৌলিক নিরাপত্তা অনুশীলন।

npm workspaces কীভাবে মনোরিপো সরল করে?

npm workspaces একটি একক রিপোজিটরিতে একাধিক প্যাকেজ পরিচালনার অনুমতি দেয়। রুট package.json-এ "workspaces": ["packages/*"] ফিল্ড যোগ করুন। সুবিধা: শেয়ার্ড node_modules-এ সব নির্ভরশীলতার একক ইনস্টলেশন, স্থানীয় প্যাকেজের মধ্যে স্বয়ংক্রিয় সিমলিঙ্ক, রুট থেকে সব প্যাকেজের জন্য স্ক্রিপ্ট চালানো, এবং সংস্করণ নকল দূর করা।

কেন package-lock.json রিপোজিটরিতে কমিট করবেন?

package-lock.json সব নির্ভরশীলতা এবং তাদের ট্রানজিটিভ প্যাকেজের নির্ভুল সংস্করণ লক করে। এটি ছাড়া, বিভিন্ন ডেভেলপার এবং CI সার্ভার সিম্যান্টিক রেঞ্জের মধ্যে লাইব্রেরির বিভিন্ন সংস্করণ পেতে পারে, যা «আমার মেশিনে কাজ করে» ত্রুটির দিকে নিয়ে যায়। লক ফাইল কমিট করা পুনরুৎপাদনযোগ্য বিল্ড এবং সব পরিবেশে অভিন্ন আচরণ নিশ্চিত করে।

সারসংক্ষেপ

  • npm — Node.js এর স্ট্যান্ডার্ড প্যাকেজ ম্যানেজার, Node.js এর সাথে সংস্করণ 0.6.3 থেকে অন্তর্ভুক্ত
  • package.json — নির্ভরশীলতা, স্ক্রিপ্ট এবং মেটাডেটা সহ প্রকল্প কনফিগারেশন ফাইল
  • npm install — নির্ভরশীলতা ইনস্টল করে, npm ci — CI/CD-এর জন্য package-lock.json থেকে কঠোরভাবে ইনস্টল করে
  • package-lock.json — নির্ভুল সংস্করণ লক, পুনরুৎপাদনযোগ্য বিল্ডের জন্য বাধ্যতামূলক
  • npm Registry — ২ মিলিয়নের বেশি মডিউল সহ সবচেয়ে বড় প্যাকেজ রেজিস্ট্রি
  • npm audit — স্বয়ংক্রিয় দুর্বলতা সংশোধন সহ নির্ভরশীলতা নিরাপত্তা পরীক্ষা
  • npm workspaces — শেয়ার্ড node_modules সহ মনোরিপো ব্যবস্থাপনা প্রক্রিয়া

আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব

IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।

প্রকল্প নিয়ে আলোচনা করুন

আরও পড়ুন