Monorepo, birden fazla projeyi veya paketi tek bir versiyon kontrol deposunda (repository) barındıran bir yazılım geliştirme stratejisidir. Google, Facebook, Microsoft gibi teknoloji devleri onlarca yıldır bu yaklaşımı kullanıyor. Peki küçük ve orta ölçekli ekipler için de mantıklı mı?
Monorepo'nun en büyük avantajı, paylaşılan kod parçaları (shared utilities, UI component library, type definitions) üzerindeki değişikliklerin tüm projelerde anlık olarak yansımasıdır. Örneğin, hem bir web uygulaması hem de bir mobil uygulama geliştiriyorsanız, ortak iş mantığını tek bir pakette tutabilir ve her ikisinde de kullanabilirsiniz. Çok depolu (polyrepo) yaklaşımda bu değişiklikleri senkronize etmek için versiyon yönetimi ve yayınlama süreçleriyle uğraşmanız gerekir.
Turborepo, Nx ve pnpm workspaces gibi modern araçlar, monorepo'nun tarihsel dezavantajı olan build sürelerini dramatik şekilde azaltıyor. Akıllı önbellekleme (remote cache) sayesinde yalnızca değişen paketler yeniden derleniyor; dev sunucusu başlatma süresi saatlerden dakikalara iniyor.
Ne zaman monorepo tercih etmeli? Birden fazla birbirine bağımlı ürün geliştiriyorsanız, ortak bileşen kütüphanesi paylaşıyorsanız veya tam yığın (full-stack) bir ürünün frontend ve backend'ini aynı ekip yönetiyorsa monorepo doğal tercih olacaktır. Tek bir bağımsız ürün geliştiren küçük ekipler için ise polyrepo yaklaşımı genellikle daha az yük getirir.