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.
Daftar Isi
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.
-
Kontributor
Semua konten ini telah dibuat, ditinjau, dan divalidasi oleh orang-orang hebat ini.
-
-
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
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
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
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
Gunakan pengaturan CI yang ada , dan tidak perlu mempublikasikan paket berversi jika semua konsumen berada dalam repo yang sama.
Monorepo
Semuanya bekerja bersama di setiap komit. Tidak ada perubahan yang merusak saat Anda memperbaiki semuanya dalam komit yang sama.
Monorepo
Tidak perlu khawatir tentang ketidakcocokan karena proyek bergantung pada versi perpustakaan pihak ketiga yang bertentangan.
Monorepo
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.
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
-
Kontributor
Semua konten ini telah dibuat, ditinjau, dan divalidasi oleh orang-orang hebat ini.
Ini dia daftar kurasi buku tentang monorepos yang menurut kami layak untuk dibaca.
Kata Kunci Populer:
- web monorepo adalah