Toinen blogitekstisarjan "Ledger Live Monorepo Project" merkintä, jossa Ledger-kehittäjä kertoo meille tarinan Ledger Live -koodikannan valtavasta siirtymisestä monoarkistoon. Jos unohdat osan 1, katso se täältä:
Todettuamme, että monorepo-arkkitehtuuri oli toteuttamiskelpoinen ratkaisu, aloimme sitten tutkia käytettävissä olevia työkaluja suunnitelmamme toteuttamiseksi.
Useiden projektien käsittely
Ledger Live -tiimissä navigoimme JavaScript-ekosysteemissä, ja onneksi tiesimme jo useita tapoja käsitellä useita projekteja pakettihallinnan avulla. Joitakin näistä mahdollisista ratkaisuista ovat:
- NPM (tukee työtiloja, mutta parempia vaihtoehtoja),
- Lanka 1 (tulevat liian vanhoiksi, parempia ja tehokkaampia vaihtoehtoja),
- Lanka ≥ 2 (mielenkiintoinen idea, mutta plug n play -toimintoa ei tueta hyvin kaikkialla, etenkään React Nativessa),
- PNPM (symlinkit, rakennettu työtiloja ajatellen, levytehokas).
Kaikkien näiden tarkastelun jälkeen päätimme lähteä mukaan PNPM varten:
- levyn tehokkuus (se käyttää virtuaalista verkkokaupasta ja symlinkkejä, joten paketit ladataan vain kerran ja sitten ne linkitetään virtuaalikaupasta node_modules-tiedostoosi),
- nopeus (koska paketit tallennetaan välimuistiin, seuraavat asennukset ovat paljon nopeampia),
- sisäänrakennettu tuki työtiloille/monorepo-arkkitehtuurille (aliakset, orkestrointi jne.).
Paperilla PNPM on ehdoton helmi, mutta symlinkit olivat hieman oudosti asennettuina oikein (jälleen, erityisesti React Nativen kanssa).
Ok, valintamme oli tehty, menisimme mukaan PNPM.
Käsikirjoituksen orkestrointi
Vaikka PNPM lisää ja lisää orkestrointia sen ominaisuuksiin, se ei silti kata kaikkea, mitä halusimme tehdä, kuten:
- peräkkäiset rakennukset,
- välimuisti.
Löysimme näitä varten kaksi mielenkiintoista haastajaa, joita meidän piti tarkastella:
- NX (kulmatiimin toimesta),
- Turborepo (joka julkisti juuri v1.0.0:n, kun aloimme työskennellä sen parissa, ja nyt työskentelemme Vercel-tiimin kanssa).
Teimme konseptitodistuksen molemmille.
NX siinä oli paljon enemmän ominaisuuksia, generaattoreita, automaatiota, suuria riippuvuuskaavioita jne., mutta se lisäsi paljon yleiskustannuksia, ja koska se on melko mielivaltainen, meidän olisi noudatettava niiden käytäntöjä.
Turborepo toisaalta on melko perusominaisuuksia. Se on kuitenkin kätevä plug and play -ratkaisu, jonka voisimme muuttaa erittäin nopeasti, jos tarvetta ilmenee.
Vaikka Turborepo oli vähemmän ominaisuuksia kuin NX, se teki kaksi etsimäämme asiaa:
- Koonnosten orkestrointi riippuvuuspuuta kunnioittaen (ja samanaikaiset koonnokset),
- Välimuisti (versiot tallennetaan välimuistiin ja "toistetaan", jos niiden koodi ei ole muuttunut).
Tämä sekä helppo pudotus / pudotus sai meidät valitsemaan uuden lapsen korttelille, TurboRepo.
versiointi
Tutkimme myös useita ratkaisuja, mutta päätimme lopulta käyttää https://github.com/changesets/changesets koska se oli yksi TurboRepon suosittelema työkalu, ja pienen dokumentaation lukemisen jälkeen näytti vastaavan tarpeitamme.
Kehittäjien tulee olla hieman tiukempi kehityskulkunsa ja tarjonnan suhteen changesets
(tiedosto, joka kuvaa, mikä kirjasto heidän koodinsa muuttuu, vakavuus, joka seuraa kylvää yleissopimus ja kuvaus muutoksesta). Nämä changesets
käytetään sitten automaattisesti lyömään pakettien versiot, jotka noudattavat annettuja vakavuusasteita, sekä automatisoimaan pakettien luomisen. muutoslokien. Lisäksi työkalut mahdollistavat pre release
tila, 🍒 päällä 🍰.
Mitä seuraavaksi ?
Työkalujen valinnan jälkeen oli aika aloittaa työskentely. Seuraavassa blogiartikkelissa puhumme rakennusjärjestelmästä ja kaikista kehittäjistä / automaatiosta / jatkuvasta integraatiosta monoarkiston yhteydessä.
Valentin DE ALMEIDA
Kehittäjäkokemus ja ydintekniikka – Ledger Live
- SEO-pohjainen sisällön ja PR-jakelu. Vahvista jo tänään.
- PlatoData.Network Vertical Generatiivinen Ai. Vahvista itseäsi. Pääsy tästä.
- PlatoAiStream. Web3 Intelligence. Tietoa laajennettu. Pääsy tästä.
- PlatoESG. hiili, CleanTech, energia, ympäristö, Aurinko, Jätehuolto. Pääsy tästä.
- PlatonHealth. Biotekniikan ja kliinisten kokeiden älykkyys. Pääsy tästä.
- Lähde: https://www.ledger.com/blog/ledger-live-monorepo-project-part-2-the-tools-make-it-shine
- :on
- :On
- :ei
- :missä
- 1
- a
- Meistä
- absoluuttinen
- lisä-
- Lisää
- Jälkeen
- uudelleen
- Kaikki
- mahdollistaa
- jo
- vaihtoehdot
- an
- ja
- Kulma-
- ilmoitti
- arkkitehtuuri
- OVAT
- artikkeli
- AS
- At
- automatisoida
- automaattisesti
- Automaatio
- saatavissa
- perustiedot
- BE
- tulossa
- Paremmin
- Bitti
- Tukkia
- Blogi
- Blogitekstit
- sekä
- rakentaa
- rakentaa
- rakennettu
- mutta
- by
- muuttaa
- muuttunut
- Muutokset
- tarkastaa
- valinta
- Valita
- koodi
- ao
- tulee
- noudatettava
- käsite
- samanaikainen
- tausta
- jatkuva
- Mukava
- Sopimus
- Yleissopimukset
- Ydin
- oikein
- voisi
- kattaa
- päätti
- Päätetään
- riippuvuus
- kuvataan
- kuvaus
- dev
- Kehittäjä
- DID
- do
- dokumentointi
- ei
- Pudota
- helppo
- ekosysteemi
- tehokkuus
- tehokas
- merkintä
- erityisesti
- perustamisesta
- Eetteri (ETH)
- EVER
- kaikki
- kaikkialla
- experience
- nopeampi
- Ominaisuus
- Ominaisuudet
- filee
- virtaus
- seurata
- jälkeen
- varten
- Onneksi
- löytyi
- alkaen
- Helmi
- sukupolvi
- generaattorit
- tietty
- Go
- kaaviot
- suuri
- HAD
- käsi
- kahva
- Olla
- tätä
- HTTPS
- valtava
- ajatus
- if
- in
- sisältää
- integraatio
- mielenkiintoinen
- tulee
- IT
- SEN
- JavaScript
- vain
- Lapsi
- pääkirja
- Pääkirja Live
- vähemmän
- Kirjasto
- elää
- katso
- Katsoin
- näköinen
- Erä
- tehty
- tehdä
- johtaja
- max-width
- muutto
- mielessä
- hukata
- tila
- lisää
- tehokkaampi
- paljon
- moninkertainen
- syntyperäinen
- Navigoida
- Tarve
- tarvitaan
- tarpeet
- Uusi
- seuraava
- nyt
- of
- Vanha
- on
- kerran
- ONE
- vain
- Itsepäinen
- orkestrointi
- Muut
- meidän
- ulos
- paketti
- paketit
- Paperi
- osa
- Paikka
- suunnitelma
- Platon
- Platonin tietotieto
- PlatonData
- Pelaa
- pistoke
- plug and play
- plus
- mahdollinen
- Viestejä
- aika
- projekti
- hankkeet
- todiste
- todiste käsitteestä
- toimittaa
- laittaa
- nopeasti
- suhtautua
- Reagoi kotimaiseen
- Lukeminen
- suositeltu
- säilytyspaikka
- kunnioittaen
- tiukka
- näytti
- Sarjat
- setup
- useat
- ankaruus
- loistaa
- koska
- So
- ratkaisu
- Ratkaisumme
- jonkin verran
- erityisesti
- nopeus
- Alkaa
- alkoi
- Yhä
- verkkokaupasta
- Tarina
- myöhempi
- niin
- tuki
- Tuetut
- järjestelmä
- ottaa
- Puhua
- joukkue-
- teknologia
- kertoo
- kuin
- että
- -
- Lohko
- heidän
- sitten
- Nämä
- asiat
- ne
- vaikka?
- aika
- että
- liian
- työkalu
- työkalut
- ylin
- puu
- kaksi
- Lopulta
- us
- käytetty
- käyttötarkoituksiin
- v1
- versio
- hyvin
- kannattava
- Virtual
- halusi
- oli
- tavalla
- we
- HYVIN
- olivat
- kun
- joka
- tulee
- VIISAS
- with
- työskentely
- olisi
- vielä
- te
- Sinun
- zephyrnet