yarn: جوہر، React Native کے لیے متبادل پیکیج مینیجر

مصنف: IT Sectr اشاعت: 2026-02-13 مطالعے کا وقت: 10 منٹ

yarn — Node.js کے لیے ایک متبادل پیکیج مینیجر، جسے Facebook نے Exponent، Google اور Tilde کے ساتھ مل کر 2016 میں بنایا۔ yarn نے npm 2-4 کے رفتار اور حفاظت کے مسائل حل کیے: متوازی تنصیب، سخت lock فائل اور آف لائن کیش۔ آج yarn React Native، Expo اور مونو ریپو میں مقبول ہے۔ مزید جاننے کے لیے yarn Documentation ملاحظہ کریں۔

اہم نکات

  • yarn — npm کے مسائل حل کرنے کے لیے Facebook نے 2016 میں بنایا گیا Node.js پیکیج مینیجر
  • yarn.lock — تمام انحصاروں کے صحیح ورژن ریکارڈ کرنے والی lock فائل، خودکار طور پر تخلیق شدہ
  • yarn install — بغیر تکرار کے عالمی کیش استعمال کرتے ہوئے متوازی پیکیج تنصیب
  • yarn workspaces — مشترکہ node_modules فولڈر کے ساتھ مونو ریپو کے انتظام کا طریقہ کار
  • Plug'n'Play — node_modules کا متبادل جو پیکیجز کو عالمی کیش میں ZIP آرکائیوز میں محفوظ کرتا ہے

yarn کیا ہے — ایک پیکیج مینیجر؟

yarn (Yet Another Resource Negotiator) اکتوبر 2016 میں npm 2-4 کے مسائل (سست تنصیب، lock فائل کی کمی اور غیر محفوظ پیکیجز) کے جواب میں Facebook نے جاری کیا۔ yarn نے متوازی پیکیج ڈاؤن لوڈ، قطعی yarn.lock اور چیکسم کے ذریعے سالمیت کی تصدیق متعارف کرائی۔ 2020 میں yarn نے Plug'n'Play اور TypeScript-first نقطہ نظر کے ساتھ ورژن 2 (Berry) میں منتقلی کی۔

yarn کا فن تعمیر npm سے مختلف ہے: yarn پیکیجز کو متوازی طور پر ڈاؤن لوڈ کرتا ہے (npm ورژن 5 سے پہلے — ترتیب وار)، ہر پیکیج کو ~/.cache/yarn میں پروجیکٹس کے درمیان بغیر تکرار کے کیش کرتا ہے اور چیکسم کے ذریعے سالمیت کی تصدیق کرتا ہے۔ yarn ہر تنصیب پر yarn.lock تیار کرتا ہے، جبکہ npm میں package-lock.json صرف ورژن 5 میں ظاہر ہوا۔

yarn 2 (Berry, 2020) سے شروع کرتے ہوئے، yarn مکمل طور پر TypeScript میں دوبارہ لکھا گیا اور Plug'n'Play، workspaces، مونو ریپو کے لیے constraints اور مختلف ذرائع (npm، git، tarball) سے تنصیب کے پروٹوکول کو سپورٹ کرتا ہے۔ yarn 3+ (2022) نے Zero-Installs شامل کیا — نیٹ ورک کے بغیر فوری تنصیب کے لیے ریپوزٹری میں کیش محفوظ کرنا۔

yarn انحصار کی تنصیب کو کیسے منظم کرتا ہے

yarn install — اہم کمانڈ جو package.json اور yarn.lock پڑھتی ہے اور انحصار انسٹال کرتی ہے۔ yarn پیکیجز کو متوازی طور پر ڈاؤن لوڈ کرتا ہے، جو npm 4 اور پرانے ورژنز کے مقابلے میں تنصیب کو 2-3 گنا تیز کرتا ہے۔ yarn آف لائن کیش استعمال کرتا ہے: اگر کوئی پیکیج پہلے سے کسی دوسرے پروجیکٹ میں ڈاؤن لوڈ ہو چکا ہے، تو اسے دوبارہ ڈاؤن لوڈ کرنے کے بجائے کیش سے کاپی کیا جاتا ہے۔

bash
# yarn کے بنیادی کمانڈز
$ yarn install
$ yarn add react-native-webview
$ yarn add --dev typescript
$ yarn global add expo-cli
# انٹرایکٹو اپ ڈیٹ
$ yarn upgrade-interactive
# ڈپلیکیٹ پیکیجز ہٹائیں
$ yarn dedupe

yarn add — نیا پیکیج انسٹال کرنے کا کمانڈ۔ yarn add <package> dependencies میں شامل کرتا ہے، yarn add --dev — devDependencies میں۔ yarn خودکار طور پر yarn.lock کو اپ ڈیٹ کرتا ہے۔ yarn upgrade پیکیجز کو معنوی حد کے اندر تازہ ترین ورژن میں اپ ڈیٹ کرتا ہے۔ yarn upgrade-interactive — اپ ڈیٹ کے لیے مخصوص پیکیجز منتخب کرنے کا انٹرایکٹو موڈ۔

yarn cache — ~/.cache/yarn/v6 میں عالمی کیش۔ ہر پیکیج چیکسم کے ساتھ ZIP آرکائیو میں ایک بار محفوظ ہوتا ہے۔ yarn کیش خودکار طور پر صاف ہوتا ہے، لیکن آپ دستی طور پر yarn cache clean چلا سکتے ہیں۔ yarn cache dir کیش کا راستہ دکھاتا ہے۔ yarn cache list — کیش شدہ پیکیجز کی فہرست۔

yarn.lock: مقصد اور فائل کی ساخت

yarn.lock — ایک lock فائل جو تمام انحصاروں اور ان کے عبوری پیکیجز کے صحیح ورژن ریکارڈ کرتی ہے۔ package-lock.json (JSON) کے برعکس، yarn.lock چپٹی ساخت کے ساتھ YAML فارمیٹ استعمال کرتا ہے۔ yarn.lock ہمیشہ yarn install یا yarn add کے دوران خودکار طور پر تیار ہوتا ہے — یہ یقینی بناتا ہے کہ تمام ڈویلپرز اور CI سرورز کو پیکیجز کا ایک جیسا سیٹ ملے۔

yaml
# yarn.lock ساخت کی مثال
react@^18.3.0:
  version: "18.3.1"
  resolution: "react@npm:18.3.1"
  dependencies:
    loose-envify: "^1.1.0"
  checksum: "abc123def456..."

react-native@^0.76.0:
  version: "0.76.3"
  resolution: "react-native@npm:0.76.3"
  dependencies:
    react: "18.3.1"
  checksum: "def789ghi012..."

yarn.lock کے فیلڈز: version — پیکیج کا صحیح ورژن، resolution — ماخذ اور ورژن، dependencies — اس کے انحصار، checksum — تصدیق کے لیے چیکسم۔ yarn.lock ریپوزٹری میں کمٹ کیا جاتا ہے اور انحصار کے لیے سچائی کا واحد ذریعہ ہے۔ اگر yarn.lock اور package.json مختلف ہوں تو yarn انتباہ جاری کرتا ہے۔

Yarn constraints — مونو ریپو کے لیے اصولوں کا نظام جو yarn.lock میں انحصار کے ورژن چیک اور نافذ کرتا ہے۔ پابندیاں Yarn Constraint Language کا استعمال کرتے ہوئے yarn.constraints.js فائل میں بیان کی جاتی ہیں۔ Constraints اس بات کو یقینی بنانے کی اجازت دیتی ہیں کہ مونو ریپو میں تمام پیکیجز React یا TypeScript کے ایک ہی ورژن کا استعمال کریں۔

React Native ماحولیاتی نظام میں yarn

React Native روایتی طور پر yarn سے قریبی تعلق رکھتا ہے۔ Expo CLI، React Native CLI اور Create React Native App نے ابتدائی طور پر yarn استعمال کیا۔ React Native پروجیکٹس میں، yarn.lock مقامی ماڈیولز کے ورژن مقرر کرتا ہے، جو CocoaPods (iOS) اور Gradle (Android) کے ذریعے مستحکم کمپائلیشن کے لیے انتہائی اہم ہے۔ مشترکہ کوڈ والے React Native مونو ریپو میں yarn workspaces مقبول ہیں۔

React Native مونو ریپو میں yarn workspaces: روٹ package.json میں "workspaces": ["packages/*", "mobile"] ہوتا ہے۔ yarn install روٹ سطح پر ایک node_modules فولڈر بناتا ہے۔ پیکیجز سم لنکس کے ذریعے ایک دوسرے کا حوالہ دیتے ہیں۔ CocoaPods کو اپ ڈیٹ کرنے کے لیے مقامی انحصار تبدیل کرنے کے بعد npx pod-install چلایا جاتا ہے۔

json
{
  "private": true,
  "workspaces": [
    "packages/*",
    "apps/mobile",
    "apps/web"
  ],
  "scripts": {
    "mobile:start": "yarn workspace mobile start",
    "mobile:ios": "yarn workspace mobile ios",
    "lint": "yarn workspaces run lint"
  }
}

Expo SDK 50+ npx create-expo-app کے ذریعے بنائے گئے نئے پروجیکٹس کے لیے سرکاری طور پر yarn تجویز کرتا ہے۔ yarn Expo ماڈیولز کے ساتھ مطابقت کو یقینی بناتا ہے اور خودکار طور پر صحیح yarn.lock تیار کرتا ہے۔ yarn 3+ میں Zero-Installs ریپوزٹری میں کیش کمٹ کرنے کی اجازت دیتا ہے — ڈویلپرز git clone کے بعد انحصار انسٹال کیے بغیر استعمال کے لیے تیار ماحول حاصل کرتے ہیں۔

yarn اور npm: تقابلی تجزیہ

npm اور yarn ایک ہی مسئلہ حل کرتے ہیں — Node.js پیکیجز کا انتظام۔ npm 5-7 کی ریلیز کے ساتھ، فعال فرق عملی طور پر ختم ہو گیا ہے۔ npm 7+ میں workspaces، npm ci (yarn install --frozen-lockfile کے مساوی) اور متوازی تنصیب شامل ہے۔ تاہم، yarn مخصوص منظرناموں میں فوائد برقرار رکھتا ہے: Plug'n'Play، Zero-Installs اور ایک پختہ constraints نظام۔

خصوصیتnpmyarn
تخلیق کا سال20102016
Lock فائلpackage-lock.json (JSON)yarn.lock (YAML)
تنصیبترتیب وار (npm 5+)متوازی
Plug'n'Playنہیںہاں (yarn 2+)
Workspacesہاں (npm 7+)ہاں
Zero-Installsنہیںہاں (yarn 3+)
کیشچپٹا کرنے کے ساتھ node_modulesعالمی ~/.cache/yarn
نفاذ کی زبانJavaScriptTypeScript (yarn 2+)

yarn کب منتخب کریں: Expo SDK 50+ پر پروجیکٹس، بڑے مونو ریپو (100+ پیکیجز)، وہ ٹیمیں جو فوری ماحول سیٹ اپ کے لیے Zero-Installs کو اہمیت دیتی ہیں، اور میراثی پروجیکٹس جو پہلے سے yarn استعمال کر رہے ہیں۔ npm کب منتخب کریں: معیاری create-react-app پروجیکٹس، Next.js، Vite، مخصوص پیکیج مینیجر ضروریات کے بغیر ٹیمیں۔

yarn 4 (2024) نے بہتر کارکردگی، مقامی ESM سپورٹ اور بڑے مونو ریپو کے لیے اصلاح متعارف کرائی۔ npm 10+ حفاظت اور مطابقت پر توجہ مرکوز کرتے ہوئے ترقی کرتا رہتا ہے۔ آج npm اور yarn کے درمیان انتخاب ٹیم کی ترجیحات اور مخصوص پروجیکٹ کی ضروریات کا معاملہ ہے، نہ کہ ایک آلے کی دوسرے پر تکنیکی برتری کا۔

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

yarn اور npm کے درمیان بنیادی فرق کیا ہے؟

yarn نے ابتدائی طور پر متوازی پیکیج تنصیب اور جارحانہ کیشنگ کی بدولت رفتار میں npm کو پیچھے چھوڑ دیا۔ yarn.lock ہر تنصیب پر خودکار طور پر تیار ہوتا ہے، جبکہ package-lock.json npm 5 میں ظاہر ہوا۔ yarn صفر تنصیب وقت کے ساتھ node_modules کا متبادل Plug'n'Play پیش کرتا ہے۔ npm 7+ کے ساتھ، بنیادی منظرناموں کے لیے رفتار اور فعالیت میں فرق کم سے کم ہے۔

مونو ریپو میں yarn workspaces کیسے کام کرتے ہیں؟

yarn workspaces — ایک ریپوزٹری میں متعدد پیکیجز کے انتظام کا طریقہ کار۔ روٹ package.json میں فیلڈ "workspaces": ["packages/*"] ہوتا ہے۔ yarn install اوپری سطح پر ایک node_modules میں مشترکہ انحصار انسٹال کرتا ہے، مقامی پیکیجز کے درمیان سم لنکس بناتا ہے اور تکرار سے بچاتا ہے۔ تمام workspaces کے لیے کمانڈ yarn workspaces run <script> کے ذریعے چلائے جاتے ہیں۔

yarn Plug'n'Play کیا ہے اور اس کی ضرورت کیوں ہے؟

Plug'n'Play (PnP) — روایتی node_modules فولڈر کا متبادل، جو yarn 2 میں متعارف کرایا گیا۔ فائلیں کاپی کرنے کے بجائے، yarn .pnp.cjs میں انحصار کا نقشہ بناتا ہے اور پیکیجز کو عالمی کیش میں ZIP آرکائیوز میں محفوظ کرتا ہے۔ PnP فوائد: سیکنڈوں میں تنصیب، Node.js شروع ہونے کا وقت 30-50% کم، کوئی node_modules اور متعلقہ راستے کے مسائل نہیں۔

npm سے yarn میں پروجیکٹ کیسے منتقل کریں؟

yarn کو عالمی طور پر انسٹال کریں: npm install -g yarn۔ پروجیکٹ کی جڑ میں، yarn import چلائیں — yarn package-lock.json پڑھتا ہے اور مساوی yarn.lock بناتا ہے۔ node_modules اور package-lock.json کو حذف کریں، تصدیق کے لیے yarn install چلائیں۔ npm کو yarn سے بدل کر CI/CD کنفیگریشن اپ ڈیٹ کریں۔ yarn مکمل طور پر package.json کے ساتھ مطابقت رکھتا ہے۔

yarn میں ورژن لاک کی غلطیاں کیسے ٹھیک کریں؟

"Integrity check failed" خرابی اس وقت ہوتی ہے جب yarn.lock اور node_modules ہم آہنگ نہ ہوں۔ حل: node_modules، yarn.lock کو حذف کریں اور کیش صاف کریں (yarn cache clean)، پھر yarn install دوبارہ چلائیں۔ ورژن تنازعات کے لیے، مخصوص اپ ڈیٹ منتخب کرنے کے لیے yarn upgrade-interactive استعمال کریں۔ yarn dedupe ڈپلیکیٹ پیکیجز کو ہٹا دے گا۔

خلاصہ

  • yarn — Facebook نے 2016 میں بنایا گیا متبادل Node.js پیکیج مینیجر
  • yarn.lock — YAML فارمیٹ میں تمام انحصاروں کے صحیح ورژن ریکارڈ کرنے والی lock فائل
  • yarn install — عالمی آف لائن کیش استعمال کرتے ہوئے متوازی پیکیج تنصیب
  • Plug'n'Play — node_modules فولڈر کے بغیر ایک جدید yarn 2+ طریقہ کار
  • yarn workspaces — ایک node_modules کے ساتھ مونو ریپو کا انتظام
  • React Native میں yarn — Expo اور React Native پروجیکٹس کے لیے معیاری پیکیج مینیجر
  • Zero-Installs — پیکیجز ڈاؤن لوڈ کیے بغیر فوری تنصیب کے لیے ریپوزٹری میں کیش کمٹ کرنا

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

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

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

مزید پڑھیں