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 کا معیاری پیکیج مینیجر، ورژن 0.6.3 سے Node.js کے ساتھ شامل
  • package.json — انحصار، اسکرپٹ اور میٹا ڈیٹا والی پروجیکٹ کنفیگریشن فائل
  • npm install — package.json سے node_modules فولڈر میں انحصار انسٹال کرنے کا بنیادی کمانڈ
  • package-lock.json — تمام ماحول میں دوبارہ پیدا ہونے والی انسٹالیشن کے لیے صحیح ورژن لاک فائل
  • npm ci — CI/CD کمانڈ جو لاک فائل کو اپ ڈیٹ کیے بغیر اس سے سختی سے پیکیج انسٹال کرتا ہے

npm کیا ہے — Node.js پیکیج مینیجر؟

npm کو 2010 میں Isaac Schlueter نے Node.js انحصار کے نظم کے حل کے طور پر بنایا تھا۔ 2014 سے npm کا انتظام npm, Inc. کر رہا ہے، جسے 2020 میں Microsoft/GitHub نے حاصل کیا۔ یہ ٹول دو حصوں پر مشتمل ہے: CLI (کمانڈ لائن) پیکیج انسٹال اور منظم کرنے کے لیے، اور Registry — registry.npmjs.org پر تمام شائع شدہ ماڈیولز کا مرکزی ذخیرہ۔

npm Registry سب سے بڑا پیکیج رجسٹری ہے: 2 ملین سے زیادہ پیکیج اور ماہانہ 10 بلین سے زیادہ ڈاؤن لوڈ۔ ہر پیکیج میں 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 ڈیٹا بیس سے معروف کمزوریوں کے لیے انحصار کے درخت کو اسکین کرتا ہے۔ کمانڈ سنگینی کی سطحوں (critical، high، moderate) کے ساتھ رپورٹ آؤٹ پٹ کرتا ہے اور کمزور پیکیج کو خودکار طور پر اپ ڈیٹ کرنے کے لیے 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+)متوازیمتوازی
ڈسک کی جگہمعیاریمعیاریکم سے کم (لنک)
ورک اسپیسہاں (npm 7+)ہاںہاں
Plug'n'Playنہیںہاںنہیں

State of JS 2025 کے مطابق: 62% ڈیولپرز npm استعمال کرتے ہیں، 35% yarn (بنیادی طور پر پرانے پروجیکٹ اور PnP کے شوقین) اور 3% pnpm استعمال کرتے ہیں۔ React Native پروجیکٹس کے لیے، دونوں ٹولز یکساں طور پر قابل عمل ہیں، لیکن npm ان پروجیکٹس میں زیادہ عام ہے جو Expo SDK 50+ اور نئی React Native ابتداء استعمال کرتے ہیں۔

yarn انتہائی بڑے مونو ریپو (100+ پیکیج) میں اپنے زیادہ پختہ ورک اسپیس نفاذ اور Plug'n'Play کی بدولت برتری برقرار رکھتا ہے۔ pnpm عالمی اسٹور پر ہارڈ لنک کے ذریعے ڈسک کی جگہ بچانے میں جیتتا ہے۔ مینیجر کا انتخاب ٹیم کی ترجیحات اور انفراسٹرکچر پر منحصر ہے۔

اکثر پوچھے گئے سوالات

npm install اور npm ci میں کیا فرق ہے؟

npm install package-lock.json کو اپ ڈیٹ کرتا ہے اور semantic رینج میں نئے مائنر ورژن انسٹال کر سکتا ہے۔ 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 ڈیٹا بیس سے معروف کمزوریوں کے لیے انحصار کے درخت کو اسکین کرتا ہے۔ کمانڈ سنگینی کی سطح (critical، high، moderate، low) کے ساتھ رپورٹ آؤٹ پٹ کرتا ہے اور کمزور پیکیج کو محفوظ ورژن میں خودکار طور پر اپ ڈیٹ کرنے کے لیے npm audit fix تجویز کرتا ہے۔ باقاعدگی سے npm audit چلانا JavaScript پروجیکٹس کے لیے ایک بنیادی حفاظتی عمل ہے۔

npm ورک اسپیس مونو ریپو کو کیسے آسان بناتے ہیں؟

npm ورک اسپیس ایک ہی ریپوزٹری میں متعدد پیکیج منظم کرنے کی اجازت دیتے ہیں۔ روٹ package.json میں "workspaces": ["packages/*"] فیلڈ شامل کریں۔ فوائد: مشترکہ node_modules میں تمام انحصار کی ایک ہی تنصیب، مقامی پیکیج کے درمیان خودکار علامتی لنک، جڑ سے تمام پیکیج کے لیے اسکرپٹ چلانا، اور ورژن ڈپلیکیشن کو ختم کرنا۔

package-lock.json کو ریپوزٹری میں کیوں کمٹ کریں؟

package-lock.json تمام انحصار اور ان کے عبوری پیکیج کے صحیح ورژن کو لاک کرتا ہے۔ اس کے بغیر، مختلف ڈیولپرز اور CI سرورز کو semantic رینج میں لائبریری کے مختلف ورژن مل سکتے ہیں، جس سے «میری مشین پر کام کرتا ہے» کی خرابیاں پیدا ہوتی ہیں۔ لاک فائل کو کمٹ کرنا دوبارہ پیدا ہونے والی بلڈ اور تمام ماحول میں ایک جیسا سلوک یقینی بناتا ہے۔

خلاصہ

  • npm — Node.js کا معیاری پیکیج مینیجر، ورژن 0.6.3 سے Node.js کے ساتھ شامل
  • package.json — انحصار، اسکرپٹ اور میٹا ڈیٹا والی پروجیکٹ کنفیگریشن فائل
  • npm install — انحصار انسٹال کرتا ہے، npm ci — CI/CD کے لیے package-lock.json سے سختی سے انسٹال کرتا ہے
  • package-lock.json — صحیح ورژن لاک، دوبارہ پیدا ہونے والی بلڈ کے لیے لازمی
  • npm Registry — 2 ملین سے زیادہ ماڈیولز کے ساتھ سب سے بڑا پیکیج رجسٹری
  • npm audit — خودکار کمزوری کی اصلاح کے ساتھ انحصار سیکیورٹی چیک
  • npm ورک اسپیس — مشترکہ node_modules کے ساتھ مونو ریپو مینجمنٹ میکانزم

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں