لیجر لائیو مونوریپو پروجیکٹ: حصہ 2 - ٹولز (اسے چمکدار بنائیں) | لیجر

لیجر لائیو مونوریپو پروجیکٹ: حصہ 2 - ٹولز (اسے چمکدار بنائیں) | لیجر

ماخذ نوڈ: 2985172

بلاگ پوسٹس سیریز "لیجر لائیو مونوریپو پروجیکٹ" کا دوسرا اندراج، جہاں ایک لیجر ڈویلپر ہمیں لیجر لائیو کوڈبیس کی ایک مونو ریپوزٹری میں بڑی منتقلی کی کہانی سناتا ہے۔ اگر آپ نے حصہ 1 چھوٹ دیا ہے تو اسے یہاں دیکھیں:

یہ ثابت کرنے کے بعد کہ ایک monorepo فن تعمیر ایک قابل عمل حل ہے، پھر ہم نے اپنے منصوبے کو عملی جامہ پہنانے کے لیے دستیاب ٹولز کو تلاش کرنا شروع کیا۔

متعدد پروجیکٹس کو ہینڈل کرنا

لیجر لائیو ٹیم میں ہم جاوا اسکرپٹ ایکو سسٹم میں نیویگیٹ کرتے ہیں، اور خوش قسمتی سے ہمارے لیے، ہمیں اپنے پیکیج مینیجر کے ساتھ متعدد پروجیکٹس کو ہینڈل کرنے کے کئی طریقے پہلے سے ہی معلوم تھے۔ ان میں سے کچھ ممکنہ حل میں شامل ہیں:

  • این پی ایم (ورک اسپیس کے لیے سپورٹ ہے لیکن بہتر متبادل)
  • سوت 1 (بہت پرانا، بہتر اور زیادہ موثر متبادل)
  • سوت ≥ 2 (دلچسپ خیال، لیکن پلگ این پلے ہر جگہ اچھی طرح سے تعاون یافتہ نہیں ہے، خاص طور پر React Native کے ساتھ)
  • پی این پی ایم (سم لنکس، ذہن میں ورک اسپیس کے ساتھ بنائے گئے، ڈسک موثر)۔

ان سب کو دیکھنے کے بعد ہم نے ساتھ جانے کا فیصلہ کیا۔ پی این پی ایم کے لئے:

  • ڈسک کی کارکردگی (یہ ایک ورچوئل استعمال کرتا ہے۔ ذخیرہ اور ترکیب، لہذا پیکیجز صرف ایک بار ڈاؤن لوڈ کیے جاتے ہیں پھر ورچوئل اسٹور سے آپ کے نوڈ_موڈیول سے ہم آہنگ ہوتے ہیں)
  • رفتار (چونکہ پیکجز کیش شدہ ہیں، اس کے بعد کی تنصیبات بہت تیز ہیں)،
  • ورک اسپیس/مونوریپو فن تعمیر (عرف، آرکیسٹریشن وغیرہ…) کے لیے تعاون میں بنایا گیا ہے۔

کاغذ پر پی این پی ایم ایک مطلق جواہر ہے، لیکن صحیح طریقے سے سیٹ اپ کرنے کے لیے سیم لنکس قدرے عجیب تھے (دوبارہ، خاص طور پر React Native کے ساتھ)۔

ٹھیک ہے، تو ہمارا انتخاب ہو گیا، ہم ساتھ جائیں گے۔ پی این پی ایم۔

اسکرپٹ آرکیسٹریشن

اگرچہ پی این پی ایم اپنی خصوصیات میں زیادہ سے زیادہ آرکیسٹریشن کا اضافہ کرتا ہے، یہ اب بھی ہر اس چیز کا احاطہ نہیں کرتا جو ہم کرنا چاہتے تھے، جیسے:

  • ترتیب وار تعمیرات،
  • کیشنگ

ان کے لیے، ہمیں دو دلچسپ دعویدار ملے جن پر ہمیں ایک نظر ڈالنے کی ضرورت ہے:

  • NX (کونی ٹیم کی طرف سے)
  • ٹربورپو (جس نے ابھی v1.0.0 کا اعلان کیا جب ہم نے اس پر کام کرنا شروع کیا، اور اب Vercel ٹیم کے ساتھ کام کر رہے ہیں)۔

ہم نے دونوں پر تصور کا ثبوت دیا۔

NX اس میں بہت زیادہ خصوصیات، جنریٹر، آٹومیشن، زبردست انحصاری گراف وغیرہ تھے… لیکن، اس نے بہت زیادہ اوور ہیڈ کا اضافہ کیا، اور چونکہ یہ کافی رائے والا ہے، ہمیں ان کے کنونشنز پر عمل کرنا ہوگا۔

ٹربورپو دوسری طرف، بہت بنیادی خصوصیت وار ہے. پھر بھی یہ ایک آسان پلگ اینڈ پلے حل ہے جسے ضرورت پڑنے پر ہم بہت جلد تبدیل کر سکتے ہیں۔

اگرچہ ٹربورپو سے کم خصوصیات تھیں۔ NX، اس نے وہ 2 چیزیں کیں جن کی ہم تلاش کر رہے تھے:

  • انحصار کے درخت کا احترام کرتے ہوئے تعمیرات کا آرکیسٹریشن (اور کنکرنٹ بلڈز)
  • کیشنگ (تعمیرات کو کیش کیا جاتا ہے اور 'دوبارہ چلایا جاتا ہے' اگر ان کا کوڈ تبدیل نہیں ہوا ہے)۔

اس کے علاوہ آسان ڈراپ ان/ڈراپ آؤٹ نے ہمیں بلاک پر نئے بچے کا انتخاب کرنے پر مجبور کیا، ٹربو ریپو.

نسخہ

ہم نے کئی حلوں پر بھی غور کیا، لیکن بالآخر استعمال کرنے کا فیصلہ کیا۔ https://github.com/changesets/changesets جیسا کہ یہ ایک ٹول تھا جسے TurboRepo نے تجویز کیا تھا، اور کچھ دستاویزات پڑھنے کے بعد، ایسا لگتا تھا کہ وہ ہماری ضروریات کو پورا کرتا ہے۔

ڈویلپرز کو اپنے دیو بہاؤ اور فراہم کرنے میں تھوڑا زیادہ سخت ہونے کی ضرورت ہوگی۔ changesets (فائل یہ بتاتی ہے کہ کون سی لائبریری ان کا کوڈ بدلتا ہے، اس کے بعد کی شدت سمور کنونشن، اور تبدیلی کی تفصیل)۔ یہ changesets پھر دی گئی شدتوں کا احترام کرتے ہوئے پیکجوں کے ورژن کو خود بخود ٹکرانے کے ساتھ ساتھ چینج لاگز. اس کے سب سے اوپر، اوزار کے لئے اجازت دیتا ہے pre release موڈ، 🍒 پر 🍰۔

اس کے بعد کیا ہے ؟

ٹولز پر فیصلہ کرنے کے بعد، یہ کام شروع کرنے کا وقت تھا. اگلے بلاگ آرٹیکل میں، ہم ایک مونو ریپوزٹری کے تناظر میں بلڈ سسٹم اور تمام dev-ops/ آٹومیشن/ مسلسل انضمام کے بارے میں بات کریں گے۔


ویلنٹائن ڈی المیڈا
ڈویلپر کا تجربہ اور بنیادی ٹیک - لیجر لائیو

ٹائم اسٹیمپ:

سے زیادہ لیجر