Co je monorepo?
Monorepo je jeden verzovací repozitář, ve kterém leží kód mnoha projektů, knihoven a služeb najednou. Místo toho, abyste každé aplikaci a každé sdílené knihovně dali vlastní repozitář, dáte je všechny na jedno místo a verzujete je společně.
Opačný přístup je polyrepo (česky se mu říká i multi-repo): každý projekt, knihovna nebo služba má vlastní repozitář s vlastní historií, vlastními pull requesty a vlastním cyklem vydávání. Obě cesty jsou v pořádku. Rozhodujete se podle toho, jak chcete propojit kód, závislosti a týmy, ne podle toho, co je zrovna „moderní“.
Lidsky řečeno
Představte si monorepo jako jednu velkou kartotéku pro celou firmu, kde má každý projekt svou popsanou zásuvku. Všechno sdílí stejnou skříň, stejný klíč a stejná pravidla pro zakládání. Polyrepo je opak: každý projekt má vlastní skříň ve vlastní místnosti. Kartotéka za vás dokumenty nenapíše, jen rozhoduje o tom, jestli leží pohromadě, nebo zvlášť.
Pojem proslavily velké technologické firmy. Google, Meta i Microsoft provozují obrovská monorepa. Jejich měřítko ale potřebovat nemusíte a monorepo nepotřebujete jen proto, že ho používají oni.
Výhody a kompromisy
Monorepo se vyplatí, když na sobě projekty závisí a mění se společně.
- Jedna změna, jeden pull request. Když upravíte sdílenou knihovnu, opravíte ve stejném commitu i všechny projekty, které ji používají. Nemusíte čekat, až tři samostatné repozitáře vydají novou verzi.
- Snadné sdílení kódu. Sdílené komponenty, typy a pomocné funkce leží hned vedle kódu, který je používá. Nemusíte je nejdřív publikovat jako balíček, abyste je mohli použít interně.
- Jednotné nástroje. Jedna sada pravidel pro lint, jeden formátovač, jedno nastavení testů a jedna CI pipeline pro všechny.
- Viditelné závislosti. Jasně vidíte, co na čem závisí, protože je všechno v jednom grafu.
Kompromisy jsou ale reálné.
- Repozitář se zvětší. Klonování, indexování i vyhledávání zpomalí, jak kód roste. Velká monorepa potřebují nástroje jako Nx, Turborepo nebo Bazel, aby zůstala svižná.
- CI musí být chytré. Nechcete při každém commitu znovu sestavovat a testovat úplně všechno. Potřebujete cache sestavení a rozpoznání toho, kterých projektů se změna skutečně týká.
- Práva jsou hrubší. Každý, kdo má přístup k repozitáři, vidí všechno uvnitř, a to ne vždycky chcete.
Stručně: monorepo vyměňuje náročnější nastavení za těsnější propojení.
Kdy se hodí, a kdy ne
Monorepo se hodí, když:
- Vaše projekty spolu hodně sdílejí kód nebo se mění společně (webová aplikace, její mobilní klient a sdílený design systém).
- Máte malý počet týmů, které spolu úzce koordinují práci.
- Chcete jednotný způsob, jak všechno sestavit, otestovat a vydat.
K samostatným repozitářům se přikloňte, když:
- Projekty jsou opravdu nezávislé a málokdy sahají do stejného kódu.
- Týmy vydávají v hodně odlišných rytmech a každý si spravuje vlastní nasazení.
- Potřebujete přísně oddělit přístup mezi projekty.
- Projekt je malý nebo krátkodobý a jeden repozitář bohatě stačí.
Když si nejste jistí, začněte jednoduše. Malý projekt monorepo nepotřebuje. Sáhněte po něm ve chvíli, kdy vás sdílení kódu napříč repozitáři začne bolet.
Na co si dát pozor
- Nepleťte si monorepo s monolitem. Monorepo říká, kde kód leží. Monolit říká, jak se aplikace sestavuje a nasazuje jako jeden celek. Můžete mít monorepo plné malých nezávislých služeb a stejně tak můžete mít monolit rozdělený do několika repozitářů.
- Nevynechávejte nástroje. Monorepo bez cache sestavení a bez rozpoznání dotčených projektů změní CI v pomalé a drahé úzké hrdlo. Nástroj vyberte včas.
- Nedělejte z něj smetiště. Jeden repozitář neznamená žádný řád. Jasné vlastnictví, konvence složek a hranice mezi projekty jsou tím důležitější, ne naopak.
- Nezavádějte ho jen proto, že to dělá Google. Jejich problémy nejsou vaše problémy. Vyberte uspořádání, které sedí velikosti vašeho týmu a tomu, jak spolu vaše projekty doopravdy souvisí.
Související články
- Context engineering: nová dovednost vývojářů - Jak dát AI nástrojům správný kontext, na čem ve velkém sdíleném kódu záleží o to víc.
- Co je to Cursor a co umí? - AI editor kódu a jak čte váš projekt.
- Claude Code vs Cursor vs Copilot z praxe - Srovnání AI nástrojů na reálné práci.
Chcete být o krok napřed?
Nenechte si utéct naše nejlepší postřehy. Žádný spam, jen praktické analýzy, pozvánky na exkluzivní eventy a shrnutí podcastů přímo do vaší schránky.
