Proyek Ledger Live Monorepo: Bagian 2 - Alat (Membuatnya Bersinar) | buku besar

Proyek Ledger Live Monorepo: Bagian 2 – Alat (Membuatnya Bersinar) | buku besar

Node Sumber: 2985172

Entri kedua dari seri postingan blog “Ledger Live Monorepo Project”, di mana pengembang Ledger menceritakan kepada kita kisah migrasi besar-besaran basis kode Ledger Live ke dalam repositori mono. Jika Anda melewatkan bagian 1, lihat di sini:

Setelah menetapkan bahwa arsitektur monorepo adalah solusi yang layak, kami kemudian mulai mencari alat yang tersedia untuk menerapkan rencana kami.

Menangani banyak proyek

Di tim Ledger Live kami menavigasi ekosistem JavaScript, dan untungnya bagi kami, kami telah mengetahui beberapa cara untuk menangani banyak proyek dengan manajer paket kami. Beberapa solusi yang mungkin dilakukan antara lain:

  • NPM (memiliki dukungan untuk ruang kerja tetapi alternatif yang lebih baik),
  • Benang 1 (menjadi alternatif yang terlalu tua, lebih baik dan lebih efisien),
  • Benang ≥ 2 (ide menarik, tetapi plug n play tidak didukung dengan baik di semua tempat, terutama dengan React Native),
  • PNPM (symlinks, dibangun dengan mempertimbangkan ruang kerja, efisien disk).

Setelah melihat semua ini, kami memutuskan untuk ikut PNPM untuk:

  • efisiensi disk (menggunakan virtual menyimpan dan symlinks, jadi paket diunduh hanya sekali lalu disinkronkan ke node_modules Anda dari toko virtual),
  • kecepatannya (karena paket di-cache, instalasi selanjutnya jauh lebih cepat),
  • dibangun untuk mendukung ruang kerja/arsitektur monorepo (alias, orkestrasi, dll…).

Di kertas PNPM adalah permata yang mutlak, tetapi symlink agak aneh untuk diatur dengan benar (sekali lagi, khususnya dengan React Native).

Oke, jadi pilihan kita sudah dibuat, kita akan ikut PNPM.

Orkestrasi Naskah

Meskipun PNPM menambahkan lebih banyak orkestrasi pada fitur-fiturnya, namun masih belum mencakup semua yang ingin kami lakukan, seperti:

  • build berurutan,
  • menyimpan cache.

Untuk ini, kami menemukan dua pesaing menarik yang perlu kami perhatikan:

  • NX (oleh tim sudut),
  • turborepo (yang baru saja mengumumkan v1.0.0 ketika kami mulai mengerjakannya, dan sekarang bekerja dengan tim Vercel).

Kami melakukan bukti konsep pada keduanya.

NX memiliki lebih banyak fitur, generator, otomasi, grafik ketergantungan yang bagus, dll… tetapi, hal ini menambah banyak overhead, dan karena cukup berpendirian keras, kami harus mengikuti konvensi mereka.

turborepo di sisi lain, ini adalah fitur yang cukup mendasar. Namun ini adalah solusi plug and play yang mudah dan dapat kami ubah dengan sangat cepat jika diperlukan.

Meskipun turborepo memiliki lebih sedikit fitur daripada NX, itu melakukan 2 hal yang kami cari:

  • Orkestrasi build yang menghormati pohon ketergantungan (dan build bersamaan),
  • Caching (build di-cache dan 'diputar ulang' jika kodenya tidak berubah).

Itu, ditambah kemudahan drop in / drop out, membuat kami memilih anak baru di blok tersebut, TurboRepo.

Versi

Kami juga mencari beberapa solusi, namun akhirnya memutuskan untuk menggunakannya https://github.com/changesets/changesets karena ini adalah salah satu alat yang direkomendasikan TurboRepo, dan setelah sedikit membaca dokumentasi, sepertinya memenuhi kebutuhan kami.

Pengembang harus lebih teliti dalam alur pengembangan dan penyediaannya changesets (file yang menjelaskan perpustakaan mana yang kodenya diubah, tingkat keparahannya mengikuti sever konvensi, dan deskripsi perubahannya). Ini changesets kemudian digunakan untuk secara otomatis mengubah versi paket sesuai dengan tingkat keparahan yang diberikan, serta mengotomatiskan pembuatannya log perubahan. Selain itu, alatnya memungkinkan pre release mode, 🍒 pada 🍰.

Apa berikutnya ?

Setelah memutuskan alatnya, tibalah waktunya untuk mulai bekerja. Pada artikel blog berikutnya, kita akan membahas tentang sistem build dan semua operasi pengembangan/otomatisasi/integrasi berkelanjutan dalam konteks repositori mono.


Valentin DE ALMEIDA
Pengalaman Pengembang & Teknologi Inti – Ledger Live

Stempel Waktu:

Lebih dari Buku besar