Bir Ledger geliştiricisinin bize Ledger Live kod tabanının mono depoya devasa geçiş hikayesini anlattığı "Ledger Live Monorepo Projesi" blog yazıları serisinin ikinci girişi. 1. bölümü kaçırdıysanız buradan göz atın:
Monorepo mimarisinin geçerli bir çözüm olduğunu belirledikten sonra planımızı uygulamaya koymak için mevcut araçları araştırmaya başladık.
Birden fazla projeyi yönetme
Ledger Live ekibi olarak JavaScript ekosisteminde geziniyoruz ve bizim için şans eseri, paket yöneticimizle birden fazla projeyi yönetmenin çeşitli yollarını zaten biliyorduk. Bu olası çözümlerden bazıları şunlardır:
- NPM (çalışma alanları desteği var ancak daha iyi alternatifler var),
- İplik 1 (çok eski, daha iyi ve daha verimli alternatifler haline geliyor),
- İplik ≥ 2 (ilginç bir fikir, ancak tak ve çalıştır her yerde, özellikle de React Native'de pek desteklenmiyor),
- PNPM (sembolik bağlantılar, çalışma alanları göz önünde bulundurularak oluşturulmuştur, disk açısından verimlidir).
Bütün bunlara baktıktan sonra gitmeye karar verdik. PNPM için:
- disk verimliliği (sanal bir ağ kullanır) mağaza ve sembolik bağlar, yani paketler yalnızca bir kez indirilir ve daha sonra sanal mağazadan node_modules'ınıza sembolik olarak bağlanır),
- hız (paketler önbelleğe alındığından sonraki kurulumlar çok daha hızlıdır),
- çalışma alanları/monorepo mimarisi (takma adlar, orkestrasyon vb.) için yerleşik destek.
Kağıtta PNPM mutlak bir mücevher, ancak sembolik bağlantıların doğru şekilde kurulması biraz tuhaftı (yine, özellikle React Native ile).
Tamam, yani seçimimiz yapıldı, biz de gidecektik PNPM.
Komut Dosyası Düzenlemesi
Rağmen PNPM Özelliklerine giderek daha fazla orkestrasyon eklese de hâlâ yapmak istediğimiz her şeyi kapsamıyor, örneğin:
- sıralı yapılar,
- Önbelleğe almak.
Bunlar için göz atmamız gereken iki ilginç yarışmacı bulduk:
- NX (açısal ekip tarafından),
- türborepo (üzerinde çalışmaya başladığımızda v1.0.0'ı duyurduk ve şu anda Vercel ekibiyle çalışıyoruz).
Her ikisinde de kavram kanıtı yaptık.
NX çok daha fazla özelliği, jeneratörleri, otomasyonu, harika bağımlılık grafikleri vs. vardı… ama çok fazla yük katıyordu ve oldukça inatçı olduğu için onların kurallarına uymak zorunda kalacaktık.
türborepo Öte yandan, oldukça basit bir özelliktir. Ancak ihtiyaç duyulduğunda çok hızlı bir şekilde değiştirebileceğimiz kullanışlı bir tak ve çalıştır çözümüdür.
Rağmen türborepo olduğundan daha az özelliğe sahipti NX, aradığımız 2 şeyi yaptı:
- Yapıların bağımlılık ağacına (ve eşzamanlı yapılara) göre düzenlenmesi,
- Önbelleğe alma (derlemeler önbelleğe alınır ve kodları değişmediyse 'tekrar oynatılır').
Buna ek olarak kolay giriş/çıkış bloktaki yeni çocuğu seçmemize neden oldu. TurboRepo.
Sürüm
Biz de çeşitli çözümlere baktık ama sonunda kullanmaya karar verdik. https://github.com/changesets/changesets TurboRepo'nun önerdiği bir araç olduğundan ve biraz dokümantasyon okuduktan sonra ihtiyaçlarımıza uygun görünüyordu.
Geliştiricilerin geliştirme akışlarında biraz daha titiz olmaları ve changesets
(kodlarının hangi kütüphanede değiştiğini açıklayan dosya, aşağıdaki önem derecesi ekmek sözleşme ve değişikliğin açıklaması). Bunlar changesets
daha sonra paketlerin belirli önem derecelerine göre sürümünü otomatik olarak yükseltmek ve aynı zamanda paketlerin oluşturulmasını otomatikleştirmek için kullanılır. yapılan değişiklikler. Bunun da ötesinde, araçlar şunları sağlar: pre release
modu, 🍰 üzerindeki 🍒.
Sıradaki ne ?
Aletlere karar verdikten sonra çalışmaya başlama zamanı gelmişti. Bir sonraki blog yazımızda build sistemi ve mono repository bağlamında tüm dev-ops/otomasyon/sürekli entegrasyondan bahsedeceğiz.
Valentin DE ALMEIDA
Geliştirici Deneyimi ve Temel Teknoloji – Ledger Live
- SEO Destekli İçerik ve Halkla İlişkiler Dağıtımı. Bugün Gücünüzü Artırın.
- PlatoData.Network Dikey Üretken Yapay Zeka. Kendine güç ver. Buradan Erişin.
- PlatoAiStream. Web3 Zekası. Bilgi Genişletildi. Buradan Erişin.
- PlatoESG. karbon, temiz teknoloji, Enerji, Çevre, Güneş, Atık Yönetimi. Buradan Erişin.
- PlatoSağlık. Biyoteknoloji ve Klinik Araştırmalar Zekası. Buradan Erişin.
- Kaynak: https://www.ledger.com/blog/ledger-live-monorepo-project-part-2-the-tools-make-it-shine
- :vardır
- :dır-dir
- :olumsuzluk
- :Neresi
- 1
- a
- Hakkımızda
- kesin
- katma
- Ekler
- Sonra
- tekrar
- Türkiye
- veriyor
- zaten
- alternatifleri
- an
- ve
- Açısal
- açıkladı
- mimari
- ARE
- göre
- AS
- At
- otomatikleştirmek
- otomatik olarak
- Otomasyon
- mevcut
- temel
- BE
- olma
- Daha iyi
- Bit
- Engellemek
- Blog
- Blog Yazıları
- her ikisi de
- inşa etmek
- inşa
- yapılı
- fakat
- by
- değişiklik
- değişmiş
- değişiklikler
- Kontrol
- seçim
- Klinik
- kod
- Kod tabanı
- geliyor
- uymak
- kavram
- eşzamanlı
- bağlam
- sürekli
- Uygun
- Kongre
- konvansiyonlar
- çekirdek
- doğru
- olabilir
- kapak
- karar
- Karar verme
- Bağımlılık
- tarif
- tanım
- dev
- Geliştirici
- DID
- do
- belgeleme
- Değil
- Damla
- kolay
- ekosistem
- verim
- verimli
- giriş
- özellikle
- kurulması
- Eter (ETH)
- hİÇ
- her şey
- her yerde
- deneyim
- Daha hızlı
- Özellikler(Hazırlık aşamasında)
- Özellikler
- fileto
- akış
- takip et
- takip etme
- İçin
- iyi ki
- bulundu
- itibaren
- Mücevher
- nesil
- jeneratörler
- verilmiş
- Go
- grafikler
- harika
- vardı
- el
- sap
- Var
- okuyun
- HTTPS
- Kocaman
- Fikir
- if
- in
- dahil
- bütünleşme
- ilginç
- içine
- IT
- ONUN
- JavaScript
- sadece
- Çocuk
- Defteri kebir
- Defter Canlı
- az
- Kütüphane
- yaşamak
- Bakın
- baktı
- bakıyor
- Çok
- yapılmış
- yapmak
- müdür
- maksimum genişlik
- göç
- akla
- cevapsız
- Moda
- Daha
- daha verimli
- çok
- çoklu
- yerli
- Gezin
- gerek
- gerekli
- ihtiyaçlar
- yeni
- sonraki
- şimdi
- of
- Eski
- on
- bir Zamanlar
- ONE
- bir tek
- inatçı
- orkestrasyon
- Diğer
- bizim
- dışarı
- paket
- paketler
- kâğıt
- Bölüm
- yer
- plan
- Platon
- Plato Veri Zekası
- PlatoVeri
- OYNA
- fiş
- tak ve çalıştır
- artı
- mümkün
- Mesajlar
- güzel
- proje
- Projeler
- kanıt
- kavramın ispatı
- sağlamak
- koymak
- hızla
- React
- yerel tepki ver
- Okuma
- Tavsiye edilen
- Depo
- ilişkin
- titiz
- gibiydi
- Dizi
- kurulum
- birkaç
- şiddet
- parlaklık
- beri
- So
- çözüm
- Çözümler
- biraz
- özel olarak
- hız
- başlama
- başladı
- Yine
- mağaza
- Öykü
- sonraki
- böyle
- destek
- destekli
- sistem
- Bizi daha iyi tanımak için
- Konuşmak
- takım
- teknoloji
- anlatır
- göre
- o
- The
- Blok
- ve bazı Asya
- sonra
- Bunlar
- işler
- Bu
- gerçi?
- zaman
- için
- çok
- araç
- araçlar
- üst
- ağaç
- iki
- eninde sonunda
- us
- Kullanılmış
- kullanım
- v1
- versiyon
- çok
- yaşayabilir
- Sanal
- aranan
- oldu
- yolları
- we
- İYİ
- vardı
- ne zaman
- hangi
- irade
- WISE
- ile
- çalışma
- olur
- henüz
- sen
- zefirnet