Ledger Live Monorepo Project: 2. rész – Az eszközök (Tedd ragyogóvá) | Főkönyv

Ledger Live Monorepo Project: 2. rész – Az eszközök (Tedd ragyogóvá) | Főkönyv

Forrás csomópont: 2985172

A „Ledger Live Monorepo Project” blogbejegyzések sorozatának második bejegyzése, ahol egy Ledger fejlesztő meséli el a Ledger Live kódbázis hatalmas migrációját egy mono tárolóba. Ha lemaradtál az 1. részről, nézd meg itt:

Miután megállapítottuk, hogy a monorepo architektúra életképes megoldás, elkezdtük megvizsgálni a rendelkezésre álló eszközöket a tervünk megvalósításához.

Több projekt kezelése

A Ledger Live csapatában a JavaScript-ökoszisztémában navigálunk, és szerencsére már több módszert is ismertünk, hogy csomagkezelőnkkel több projektet is kezeljünk. Néhány ilyen lehetséges megoldás:

  • NPM (Támogatja a munkaterületeket, de jobb alternatívákat kínál),
  • Fonal 1 (túl öregednek, jobb és hatékonyabb alternatívák),
  • Fonal ≥ 2 (érdekes ötlet, de a plug n play nem mindenhol támogatott, különösen a React Native esetében),
  • PNPM (symlinks, a munkaterületeket szem előtt tartva, lemezhatékony).

Miután mindezt megvizsgáltuk, úgy döntöttünk, hogy folytatjuk PNPM szempontjainak:

  • a lemez hatékonysága (virtuális tárolni és a szimplaink, így a csomagok csak egyszer kerülnek letöltésre, majd a virtuális áruházból szimbolizálják a node_modules-hoz),
  • a sebesség (mivel a csomagok gyorsítótárban vannak, a későbbi telepítések sokkal gyorsabbak),
  • beépített támogatás a munkaterületekhez/monorepo architektúrához (álnevek, hangszerelés stb.).

Papíron PNPM abszolút gyöngyszem, de a szimbolikus linkek egy kicsit furcsa volt a helyes beállításhoz (ismét, különösen a React Native esetében).

Rendben, úgy döntöttünk, mi is mennénk PNPM.

Forgatókönyv hangszerelése

Annak ellenére PNPM egyre több hangszerelést ad a funkcióihoz, de még mindig nem fed le mindent, amit szerettünk volna, például:

  • szekvenciális építmények,
  • gyorsítótárazás.

Ezekhez két érdekes versenyzőt találtunk, amelyeket meg kellett vizsgálnunk:

  • NX (a szögletes csapat által),
  • Turborepo (amely éppen bejelentette a v1.0.0-t, amikor elkezdtünk dolgozni rajta, és most a Vercel csapatával dolgozunk).

Mindkettőn elkészítettük a koncepció bizonyítását.

NX sokkal több funkcióval, generátorral, automatizálással, nagy függőségi grafikonokkal stb. rendelkezett, de ez sok többletköltséget jelentett, és mivel eléggé elgondolkodtató, követnünk kellene a konvencióikat.

Turborepo másrészt meglehetősen alapvető tulajdonságok szempontjából. Mégis egy kényelmes plug and play megoldás, amelyet nagyon gyorsan megváltoztathatunk, ha szükség van rá.

Annak ellenére Turborepo kevesebb tulajdonsággal rendelkezett, mint NX, elvégezte azt a 2 dolgot, amit kerestünk:

  • A buildek hangszerelése a függőségi fát (és a párhuzamos buildeket) figyelembe véve,
  • Gyorsítótárazás (a buildek gyorsítótárazásra kerülnek és „újrajátszanak”, ha a kódjuk nem változott).

Ez, valamint a könnyű be-/kiesés késztetett minket arra, hogy az új gyereket a blokkban válasszuk, TurboRepo.

Versioning

Több megoldást is megvizsgáltunk, de végül a használata mellett döntöttünk https://github.com/changesets/changesets mivel a TurboRepo által ajánlott eszköz volt, és egy kis dokumentáció olvasás után úgy tűnt, megfelel az igényeinknek.

A fejlesztőknek egy kicsit szigorúbbnak kell lenniük a fejlesztői folyamatban és a szolgáltatásban changesets (fájl, amely leírja, hogy melyik könyvtárban változott meg a kódjuk, és a súlyosságot követi a koca konvenció, valamint a változás leírása). Ezek changesets ezután a csomagok adott súlyosságokat figyelembe vevő verzióinak automatikus összeállítására, valamint a váltónaplók. Ráadásul az eszközök lehetővé teszik pre release módban a 🍒 a 🍰-n.

Mi a következő lépés ?

Miután eldöntöttük az eszközöket, ideje elkezdeni dolgozni. A következő blogcikkben a build rendszerről és az összes fejlesztőről / automatizálásról / folyamatos integrációról fogunk beszélni egy mono tároló kontextusában.


Valentin DE ALMEIDA
Fejlesztői tapasztalat és alaptechnológia – Ledger Live

Időbélyeg:

Még több Főkönyv