Ledger Live Monorepo projekt: 2. osa – Tööriistad (Pane see särama) | Pearaamat

Ledger Live Monorepo projekt: 2. osa – Tööriistad (muutke see särama) | Pearaamat

Allikasõlm: 2985172

Teine sissekanne ajaveebipostituste seeriast “Ledger Live Monorepo Project”, kus Ledgeri arendaja räägib meile Ledger Live’i koodibaasi tohutust migratsioonist monohoidlasse. Kui jäi 1. osa vahele, siis vaata seda siit:

Olles kindlaks teinud, et monorepo arhitektuur on elujõuline lahendus, hakkasime seejärel uurima saadaolevaid tööriistu oma plaani elluviimiseks.

Mitme projekti käsitlemine

Ledger Live'i meeskonnas navigeerime JavaScripti ökosüsteemis ja meie õnneks teadsime juba mitut võimalust mitme projekti haldamiseks oma paketihalduriga. Mõned neist võimalikest lahendustest hõlmavad järgmist:

  • NPM (on tööruumide tugi, kuid paremad alternatiivid),
  • Lõng 1 (liiga vanaks muutumine, paremad ja tõhusamad alternatiivid),
  • Lõng ≥ 2 (huvitav idee, kuid plug n play pole kõikjal hästi toetatud, eriti React Native'i puhul),
  • PNPM (sümbolid, loodud tööruume silmas pidades, ketastõhusad).

Olles kõik need üle vaadanud, otsustasime kaasa minna PNPM jaoks:

  • ketta efektiivsus (see kasutab virtuaalset salvestada ja sümbolid, nii et paketid laaditakse alla ainult üks kord, seejärel lingitakse need virtuaalsest poest teie node_modules'iga),
  • kiirus (kuna paketid on vahemällu salvestatud, on järgnevad installid palju kiiremad),
  • sisseehitatud tugi tööruumidele/monorepo arhitektuurile (aliased, orkestratsioon jne).

Paberil PNPM on absoluutne pärl, kuid sümbolilinkide õige seadistamine oli pisut veider (taaskord, spetsiaalselt React Native'i puhul).

Ok, nii et meie valik oli tehtud, me läheme kaasa PNPM.

Stsenaariumi orkestreerimine

Kuigi PNPM lisab oma funktsioonidele üha rohkem orkestreerimist, see ei hõlma ikka veel kõike, mida tahtsime teha, näiteks:

  • järjestikused ehitused,
  • vahemällu salvestamine.

Nende jaoks leidsime kaks huvitavat kandidaati, mida pidime vaatama:

  • NX (nurga meeskonna poolt),
  • Turborepo (mis just teatas versioonist 1.0.0, kui selle kallal töötama hakkasime, ja nüüd töötame koos Verceli meeskonnaga).

Tegime mõlema puhul kontseptsiooni tõestuse.

NX oli palju rohkem funktsioone, generaatoreid, automatiseerimist, suurepäraseid sõltuvusgraafikuid jne... kuid see lisas palju üldkulusid ja kuna see on üsna arvamuslik, peaksime järgima nende tavasid.

Turborepo teisest küljest on see üsna põhifunktsioonide järgi. Kuid see on mugav plug and play lahendus, mida saaksime vajadusel väga kiiresti muuta.

Kuigi Turborepo oli vähem funktsioone kui NX, tegi see 2 asja, mida otsisime:

  • Järgmiste orkestreerimine, võttes arvesse sõltuvuspuud (ja samaaegsed ehitused),
  • Vahemällu salvestamine (järgud salvestatakse vahemällu ja esitatakse uuesti, kui nende kood pole muutunud).

See, pluss lihtne sisse- ja väljalangemine, pani meid valima uue lapse, TurboRepo.

Versioonide muutmine

Uurisime ka mitmeid lahendusi, kuid otsustasime lõpuks kasutada https://github.com/changesets/changesets kuna see oli üks TurboRepo soovitatud tööriist ja pärast mõningast dokumentatsiooni lugemist tundus see meie vajadustele vastavat.

Arendajad peaksid oma arendusvoo ja pakkumise osas olema pisut rangemad changesets (fail, mis kirjeldab, millist teeki nende kood muutub, ja selle raskusastet külvata konventsioon ja muudatuse kirjeldus). Need changesets kasutatakse siis pakettide versioonide automaatseks kokkutõmbamiseks, mis vastavad antud raskusastmele, ning automatiseerida muudatuste logid. Peale selle võimaldavad tööriistad pre release režiimis 🍒 🍰.

Mis järgmiseks ?

Pärast tööriistade üle otsustamist oli aeg tööle asuda. Järgmises ajaveebi artiklis räägime ehitussüsteemist ja kõigist arendajatest / automatiseerimisest / pidevast integreerimisest monohoidla kontekstis.


Valentin DE ALMEIDA
Arendaja kogemus ja põhitehnoloogia – Ledger Live

Ajatempel:

Veel alates pearaamat