Semua yang perlu Anda ketahui tentang monorepos

Semua yang perlu Anda ketahui tentang monorepos

Monorepo sedang populer saat ini, terutama di kalangan pengembang Web. Kami membuat sumber daya ini untuk membantu pengembang memahami apa itu monorepo, apa manfaatnyamereka dapat membawa, dan alat yang tersediauntuk membuat pengembangan monorepo menyenangkan.

Ada banyak alat monorepo hebat, yang dibuat oleh tim hebat, dengan filosofi berbeda. Kami melakukan yang terbaik untuk mewakili setiap alat secara objektif, dan kami menerima permintaan penarikan jika ada yang salah!

Alat yang akan kami fokuskan adalah: Bazel (oleh Google) , Gradle Build Tool (oleh Gradle, Inc), Lage (oleh Microsoft), Lerna, Nx (oleh Nrwl), Rush (oleh Microsoft), dan Turborepo (oleh Vercel). Kami memilih alat ini karena penggunaan atau pengenalannya di komunitas pengembangan Web.

Apa itu monorepo

Mari kita mulai dengan pemahaman umum tentang apa itu Monorepo.

Mengapa monorepo

Situasi apa yang diselesaikan oleh monorepo .

Fitur monorepo

Apa yang diharapkan dari sebuah alat monorepo

Ayo masuk lebih dalam ke lubang kelinci.

Untuk demi diskusi ini, mari mengatakan kebalikan dari monorepo adalah “polyrepo”. Polyrepo adalah cara standar saat ini untuk mengembangkan aplikasi: repo untuk setiap tim, aplikasi, atau proyek. Dan biasanya setiap repo memiliki satu artefak build, dan pipeline build sederhana.

Industri telah pindah ke cara polyrepo dalam melakukan sesuatu karena satu alasan besar: otonomi tim . Tim ingin membuat keputusan sendiri tentang pustaka apa yang akan mereka gunakan, kapan mereka akan menerapkan aplikasi atau pustaka mereka, dan siapa yang dapat berkontribusi atau menggunakan kode mereka.

Itu semua adalah hal yang baik, jadi mengapa tim harus melakukan sesuatu yang berbeda? Karena otonomi ini disediakan oleh isolasi, dan isolasi merugikan kolaborasi. Lebih khusus, ini adalah kelemahan umum untuk lingkungan polyrepo:

Polyrepo

Berbagi kode yang rumit

Untuk berbagi kode di seluruh repositori, Anda ‘d kemungkinan akan membuat repositori untuk kode bersama. Sekarang Anda harus menyiapkan perkakas dan lingkungan CI, menambahkan committer ke repo, dan menyiapkan penerbitan paket sehingga repo lain dapat bergantung padanya. Dan jangan mulai merekonsiliasi versi perpustakaan pihak ketiga yang tidak kompatibel di seluruh repositori…

Polyrepo

Duplikasi kode signifikan

Tidak ada yang mau repot menyiapkan repo bersama, jadi tim hanya menulis implementasi layanan dan komponen umum mereka sendiri di setiap repo. Ini membuang-buang waktu di muka, tetapi juga meningkatkan beban pemeliharaan, keamanan, dan kontrol kualitas saat komponen dan layanan berubah.

Polyrepo

Perubahan cross-repo yang mahal ke perpustakaan bersama dan konsumen

Pertimbangkan bug kritis atau perubahan yang mengganggu di perpustakaan bersama: pengembang perlu mengatur lingkungan mereka untuk menerapkan perubahan di beberapa repositori dengan riwayat revisi yang terputus. Belum lagi tentang upaya koordinasi pembuatan versi dan pelepasan paket.

Polyrepo

Perkakas tidak konsisten

Setiap proyek menggunakan kumpulan perintahnya sendiri untuk menjalankan pengujian, membangun, melayani, linting, menerapkan, dan sebagainya. Inkonsistensi menciptakan overhead mental mengingat perintah mana yang digunakan dari proyek ke proyek.

Kita bisa berakhir dalam situasi yang cukup rumit saat bekerja di polyrepo. Tapi bagaimana monorepo bisa membantu menyelesaikan semuanya?

Monorepo

Tidak ada biaya tambahan untuk membuat proyek baru

Gunakan pengaturan CI yang ada , dan tidak perlu mempublikasikan paket berversi jika semua konsumen berada dalam repo yang sama.

Monorepo

Atom melakukan di seluruh proyek

Semuanya bekerja bersama di setiap komit. Tidak ada perubahan yang merusak saat Anda memperbaiki semuanya dalam komit yang sama.

Monorepo

Satu versi dari segalanya

Tidak perlu khawatir tentang ketidakcocokan karena proyek bergantung pada versi perpustakaan pihak ketiga yang bertentangan.

Monorepo

Mobilitas pengembang

Dapatkan cara yang konsisten untuk membangun dan menguji aplikasi yang ditulis menggunakan alat dan teknologi yang berbeda . Pengembang dapat dengan percaya diri berkontribusi pada aplikasi tim lain dan memverifikasi bahwa perubahan mereka aman.

Ini rumit, kami tahu. Tapi Anda tidak sendirian dalam perjalanan ini.

Monorepo mengubah organisasi Anda

Ini lebih dari sekedar kode & alat. Monorepo mengubah organisasi Anda & cara Anda berpikir tentang kode. Dengan menambahkan konsistensi, mengurangi gesekan dalam membuat proyek baru dan melakukan pemfaktoran ulang skala besar, dengan memfasilitasi berbagi kode dan kolaborasi lintas tim, ini akan memungkinkan organisasi Anda bekerja lebih efisien.

Berikut adalah daftar video dan podcast yang dikuratori untuk masuk lebih dalam atau hanya melihat informasi dengan cara lain.

    Buku Monorepo

    Ini dia daftar kurasi buku tentang monorepos yang menurut kami layak untuk dibaca.

  • Effective React Development With Nx book cover

    Effective React Development With Nx book cover

    Effective React Development With Nx book cover

    Learn how to build enterprise-scale Angular applications which are maintainable in the long run book cover

    Kontributor

    Semua konten ini telah dibuat, ditinjau, dan divalidasi oleh orang-orang hebat ini.

Kata Kunci Populer:

web monorepo adalah