· Özgür Vurgun · Angular · 2 min read

18. Monorepo Nedir?

18. Monorepo Nedir?

Ne Bu Monorepo?

Projeyi yazıyorsun, her şey yolunda. Sonra ekip büyüyor. Frontend bir yerde, backend başka yerde, ortak UI bileşenleri başka bir repo’da…

Bir noktada kendini şöyle derken buluyorsun:

Abi şu ui-kit’i güncelledim ama 3 farklı repo’da aynı şeyi elle publish’lemek zorundayım

İşte burada Monorepo devreye giriyor.

Monorepo = Tüm projelerini, kütüphanelerini, app’lerini tek bir Git deposunda toplamak.

Tek repo. Tek hayat. Çok huzur (doğru kullanılırsa).

Polyrepo vs Monorepo

ÖzellikPolyrepoMonorepo
Kod yapısıHer proje ayrı repoHer şey tek repo içinde
VersiyonlamaHer repo kendi içindeOrtak versiyon yönetimi
Ortak kod paylaşımıZor, publish gerekebilirimport ile direkt erişim
CI/CDHer repo için ayrı pipelineOrtak config ile yönetilebilir
Bağımlılık takibiDağınıkMerkezi

Ne Zaman Lazım Olur?

  • Birden fazla Angular uygulaman var (örn: admin panel, müşteri ekranı)
  • Ortak bileşenler (design system, auth servis, form handler) yazıyorsun
  • Ekip büyüdü, ama projeleri parçalamak yerine entegre çalışmak istiyorsun

Özetle: birbirine bağlı projeleri ayrı ayrı yönetmek eziyet haline gelmişse, Monorepo sana nefes aldırır.

Angular’da Monorepo: nx, Angular CLI ile Library’ler

Angular zaten tek bir proje altında çoklu library ve app destekler. Ama biraz daha fazlası lazımsa, Nx gibi tool’lar devreye girer.

npx create-nx-workspace@latest

Yada Angular CLI ile:

ng generate library auth
ng generate application admin

Hepsi tek repo’da, libs/, apps/ klasörlerinde yaşar.

Monorepo’nun Güzel Yanları

  • Ortak kodu paylaşmak çok kolay: libs/ui-button
  • Refactor yaparken her yere etkisini anında görürsün
  • Tek commit ile tüm projeleri senkron tutarsın
  • CI/CD daha kontrollü: sadece değişen app için build/test yapabilirsin

Peki Dezavantajı Yok mu?

Var, tabii ki var. Monorepo cennet değildir:

  • Tek repo büyüdükçe clone, build, lint süreleri artar
  • Merge çatışmaları daha sık olur
  • Doğru yapılandırılmazsa tam bir dependency hell yaşanır

Ama bu sorunların çoğu Nx, Lerna, Turborepo gibi tool’larla aşılabilir.

Kendi Projende Ne Yapmalısın?

  • Küçüksen, polyrepo daha kolaydır.
  • Ekip artıyorsa, domain sayısı büyüyorsa, monorepo’ya geçmek mantıklı.
  • Angular kullanıyorsan, zaten monorepo uyumlu yapı seni bekliyor.

Sonuç: Kod Dağınıklığına Son

Monorepo şu sorulara “artık dert değil” cevabı verir:

  • “Abi bu UI kit’i 3 app’e nasıl entegre edeceğiz?”
  • “Bu auth servisini 4 yerde güncellemem mi lazım?”
  • “CI/CD config’i niye her yerde ayrı?”

Artık tek repo, tek yapı, tek kontrol var. Karmaşadan kurtulmak için bazen tek dosya değil, tek repo gerekir.

Share:
Back to Blog

Related Posts

View All Posts »
16. Zoneless Nedir?

16. Zoneless Nedir?

Angular deyince akla genelde component’ler, service’ler falan gelir ama içerde bir mimari var ki, senin haberin bile olmadan bütün uygulamanın kaderini etkiliyor: Zone.js Bu...

15. angular.json

15. angular.json

Bu Dosya Nedir? angular.json , bir Angular projesinin yapılandırma dosyasıdır. Angular CLI, bu dosyaya bakarak: - Projenin nerede başladığını - Hangi derleyici ayarlarının...

14. Signals

14. Signals

Angular Signals - Yeni Nesil Reaktivite Neden Böyle Bir Yapıya İhtiyaç Duyuldu? Angular uzun yıllardır reaktif programlama ihtiyaçlarını karşılamak için RxJS kütüphanesini...