Pri praci na slozitych softwarovych projektech muze volba mezi monorepo a polyrepo vyznamne ovlivnit produktivitu tymu.
Co jsou Monorepo a Polyrepo?
Monorepo
Monorepo je jediny repozitar obsahujici zdrojovy kod pro vice projektu.
my-monorepo/ packages/ frontend/ backend/ shared/ package.json turbo.json
Polyrepo
Polyrepo znamena, ze kazdy projekt ma svuj vlastni oddeleny repozitar.
repos/ frontend/ package.json backend/ package.json shared/ package.json
Vizualni rozdil
Vyhody a nevyhody
Monorepo
Vyhody:
- Usnadnuje sdileni kodu.
- Atomicky refaktoring napric projekty.
- Centralizovana sprava zavislosti.
Nevyhody:
- Muze se stat tezkym s rustem kodove zakladny.
- Vyzaduje nastroje pro spravu casticnych buildu/testu (napr. Nx, Turborepo).
Polyrepo
Vyhody:
- Kazdy tym/projekt je nezavisly.
- Snazsi sprava pro male projekty.
- Umoznuje granularni pristupove politiky.
Nevyhody:
- Obtiznejsi sdileni kodu bez publikovani balicku.
- Cross-repo refaktoring je slozitejsi.
- Mozna duplikace konfiguraci.
Prakticky priklad: Monorepo s Turborepo
npx create-turbo@latest
// packages/utils/src/formatDate.ts export function formatDate(date: Date): string { return date.toLocaleDateString('en-US'); }
// apps/web/pages/index.tsx import { formatDate } from '@myorg/utils'; export default function Home() { return <div>Today is {formatDate(new Date())}</div>; }
Kdy zvolit Monorepo?
- Stredne velke az velke tymy pracujici na souvisejicich projektech.
- Potreba sdileni kodu a refaktoringu ve velkem meritku.
Kdy zvolit Polyrepo?
- Male nebo nezavisle projekty.
- Oddelene tymy pracujici na ruznych produktech.
Zaver
Neexistuje dokonale reseni pro vsechny. Volba zavisi na velikosti tymu, slozitosti projektu a potrebach spoluprace.