دومین ورودی از سری پستهای وبلاگ «پروژه Ledger Live Monorepo»، جایی که یک توسعهدهنده Ledger داستان مهاجرت عظیم پایگاه کد Ledger Live به یک مخزن مونو را به ما میگوید. اگر قسمت 1 را از دست دادید، اینجا را ببینید:
پس از اینکه مشخص شد معماری مونورپو یک راه حل قابل اجرا است، ما شروع به جستجوی ابزارهای موجود برای اجرای طرح خود کردیم.
انجام پروژه های متعدد
در تیم Ledger Live ما در اکوسیستم جاوا اسکریپت حرکت می کنیم و خوشبختانه برای ما، ما قبلاً چندین راه برای مدیریت پروژه های متعدد با مدیر بسته خود می دانستیم. برخی از آن راه حل های ممکن عبارتند از:
- NPM (پشتیبانی از فضاهای کاری اما جایگزین های بهتر دارد)،
- نخ 1 (زیاد پیر شدن، جایگزین های بهتر و کارآمدتر)،
- نخ ≥ 2 (ایده جالبی است، اما plug n play در همه جا به خوبی پشتیبانی نمی شود، به خصوص با React Native)،
- PNPM (symlinks، ساخته شده با فضای کاری در ذهن، دیسک کارآمد).
بعد از بررسی همه اینها، تصمیم گرفتیم با هم همراه شویم PNPM برای:
- کارایی دیسک (از مجازی استفاده می کند opbevare و خطوط همایش، بنابراین بسته ها فقط یک بار دانلود می شوند و سپس از فروشگاه مجازی به node_modules شما پیوند داده می شوند.)
- سرعت (از آنجایی که بستهها کش هستند، نصبهای بعدی بسیار سریعتر هستند)،
- ساخته شده در پشتیبانی از فضاهای کاری/معماری مونورپو (نام مستعار، ارکستراسیون و ...).
بر روی کاغذ PNPM یک جواهر مطلق است، اما سیملینک ها کمی عجیب بودند که به درستی تنظیم شوند (باز هم، به خصوص با React Native).
خوب، پس انتخاب ما انجام شد، ما با آن همراه خواهیم شد PNPM.
ارکستراسیون فیلمنامه
حتی اگر PNPM ارکستراسیون بیشتر و بیشتری را به ویژگیهای خود اضافه میکند، هنوز همه چیزهایی را که میخواستیم انجام دهیم را پوشش نمیدهد، مانند:
- ساخت های متوالی،
- ذخیره سازی
برای این موارد، ما دو مدعی جالب پیدا کردیم که باید به آنها نگاهی بیندازیم:
- NX (توسط تیم زاویه ای)،
- توربورپو (که به تازگی نسخه 1.0.0 را زمانی که ما کار روی آن را شروع کردیم و اکنون با تیم Vercel کار می کنیم، معرفی کرد).
ما یک اثبات مفهوم بر روی هر دو انجام دادیم.
NX ویژگیهای بسیار بیشتری داشت، ژنراتورها، اتوماسیون، نمودارهای وابستگی عالی و غیره... اما، هزینههای زیادی را اضافه میکرد، و از آنجایی که بسیار خوشبینانه است، باید از قراردادهای آنها پیروی کنیم.
توربورپو از سوی دیگر، از نظر ویژگی بسیار اساسی است. با این حال، این یک راه حل مناسب برای پلاگین و بازی است که در صورت نیاز می توانیم خیلی سریع آن را تغییر دهیم.
حتی اگر توربورپو امکانات کمتری داشت NX، 2 کاری را که ما به دنبال آن بودیم انجام داد:
- ارکستراسیون ساخت ها با احترام به درخت وابستگی (و ساخت های همزمان)،
- ذخیره سازی (اگر کد آنها تغییر نکرده باشد، بیلدها ذخیره می شوند و دوباره پخش می شوند).
این، بهعلاوه خروج آسان/افتاده، ما را وادار کرد که بچه جدید را در بلوک انتخاب کنیم، TurboRepo.
نسخه بندی
ما چندین راه حل را نیز بررسی کردیم، اما در نهایت تصمیم گرفتیم از آن استفاده کنیم https://github.com/changesets/changesets همانطور که یکی از ابزارهایی بود که TurboRepo توصیه می کرد، و پس از کمی مطالعه اسناد، به نظر می رسید که با نیازهای ما مطابقت دارد.
توسعهدهندگان باید در جریان و ارائه برنامهنویس خود کمی دقیقتر باشند changesets
(پرونده ای که توضیح می دهد کد آنها در کدام کتابخانه تغییر می کند، شدت زیر semver کنوانسیون، و شرحی از تغییر). اینها changesets
سپس برای نمایش خودکار نسخه بسته ها با توجه به شدت های داده شده، و همچنین خودکارسازی تولید تغییرات. علاوه بر این، ابزار اجازه می دهد pre release
حالت، 🍒 روی 🍰.
بعدش چی؟
پس از تصمیم گیری در مورد ابزار، نوبت به شروع کار رسید. در مقاله بعدی وبلاگ، در مورد سیستم ساخت و همه توسعهها / اتوماسیون / ادغام مداوم در زمینه یک مخزن مونو صحبت خواهیم کرد.
والنتین دی آلمیدا
تجربه توسعهدهنده و فناوری هسته - Ledger Live
- محتوای مبتنی بر SEO و توزیع روابط عمومی. امروز تقویت شوید.
- PlatoData.Network Vertical Generative Ai. به خودت قدرت بده دسترسی به اینجا.
- PlatoAiStream. هوش وب 3 دانش تقویت شده دسترسی به اینجا.
- PlatoESG. کربن ، CleanTech، انرژی، محیط، خورشیدی، مدیریت پسماند دسترسی به اینجا.
- PlatoHealth. هوش بیوتکنولوژی و آزمایشات بالینی. دسترسی به اینجا.
- منبع: https://www.ledger.com/blog/ledger-live-monorepo-project-part-2-the-tools-make-it-shine
- : دارد
- :است
- :نه
- :جایی که
- 1
- a
- درباره ما
- مطلق
- اضافه
- می افزاید:
- پس از
- از نو
- معرفی
- اجازه می دهد تا
- قبلا
- جایگزین
- an
- و
- گوشه دار
- اعلام کرد
- معماری
- هستند
- مقاله
- AS
- At
- خودکار بودن
- بطور خودکار
- اتوماسیون
- در دسترس
- اساسی
- BE
- تبدیل شدن به
- بهتر
- بیت
- مسدود کردن
- بلاگ
- پست های وبلاگ
- هر دو
- ساختن
- می سازد
- ساخته
- اما
- by
- تغییر دادن
- تغییر
- تبادل
- بررسی
- انتخاب
- را انتخاب کنید
- رمز
- پایه کد
- می آید
- مطابق
- مفهوم
- رقیب
- زمینه
- مداوم
- مناسب
- قرارداد
- کنوانسیون
- هسته
- به درستی
- میتوانست
- پوشش
- مصمم
- تصمیم گیری
- وابستگی
- توصیف
- شرح
- برنامه نویس
- توسعه دهنده
- DID
- do
- مستندات
- نمی کند
- قطره
- ساده
- اکوسیستم
- بهره وری
- موثر
- ورود
- به خصوص
- ایجاد
- اتر (ETH)
- تا کنون
- همه چیز
- در همه جا
- تجربه
- سریعتر
- ویژگی
- امکانات
- پرونده
- جریان
- به دنبال
- پیروی
- برای
- خوشبختانه
- یافت
- از جانب
- جواهر
- نسل
- ژنراتور
- داده
- Go
- نمودار ها
- بزرگ
- بود
- دست
- دسته
- آیا
- اینجا کلیک نمایید
- HTTPS
- بزرگ
- اندیشه
- if
- in
- شامل
- ادغام
- جالب
- به
- IT
- ITS
- جاوا اسکریپت
- تنها
- بچه
- دفتر کل
- لجر زنده
- کمتر
- کتابخانه
- زنده
- نگاه کنيد
- نگاه
- به دنبال
- خیلی
- ساخته
- ساخت
- مدیر
- حداکثر عرض
- مهاجرت
- ذهن
- از دست رفته
- حالت
- بیش
- کارآمدتر
- بسیار
- چندگانه
- بومی
- هدایت
- نیاز
- ضروری
- نیازهای
- جدید
- بعد
- اکنون
- of
- قدیمی
- on
- یک بار
- ONE
- فقط
- مشاهده شده
- تنظیم و ارکستراسیون
- دیگر
- ما
- خارج
- بسته
- بسته
- مقاله
- بخش
- محل
- برنامه
- افلاطون
- هوش داده افلاطون
- PlatoData
- بازی
- برق وصل کردن
- پلاگین و بازی
- به علاوه
- ممکن
- پست ها
- زیبا
- پروژه
- پروژه ها
- اثبات
- اثبات مفهوم
- ارائه
- قرار دادن
- به سرعت
- واکنش نشان می دهند
- واکنش بومی
- مطالعه
- توصیه می شود
- مخزن
- احترام
- دقیق
- به نظر می رسید
- سلسله
- برپایی
- چند
- شدت
- درخشش
- پس از
- So
- راه حل
- مزایا
- برخی از
- مخصوصاً
- سرعت
- شروع
- آغاز شده
- هنوز
- opbevare
- داستان
- متعاقب
- چنین
- پشتیبانی
- پشتیبانی
- سیستم
- گرفتن
- صحبت
- تیم
- فن آوری
- می گوید
- نسبت به
- که
- La
- بلوک
- شان
- سپس
- اینها
- اشیاء
- کسانی که
- اگر چه؟
- زمان
- به
- هم
- ابزار
- ابزار
- بالا
- درخت
- دو
- در نهایت
- us
- استفاده
- استفاده
- v1
- نسخه
- بسیار
- قابل اعتماد
- مجازی
- خواسته
- بود
- راه
- we
- خوب
- بود
- چه زمانی
- که
- اراده
- WISE
- با
- کارگر
- خواهد بود
- هنوز
- شما
- شما
- زفیرنت