Monorepo to jedno repozytorium kodu, w którym znajduje się wiele powiązanych projektów, aplikacji lub bibliotek. Przeciwieństwem jest układ z osobnym repozytorium dla każdego projektu (polyrepo).
Kiedy monorepo ma sens?
Gdy kilka aplikacji dzieli kod, na przykład komponenty, typy czy konfigurację. Zmiana w bibliotece i jej użycie w kilku aplikacjach trafia do jednego commita, a zespół nie musi publikować wersji pośrednich pakietów, aby testować zmiany.
Zalety i wady
- łatwe współdzielenie kodu i spójne wersje zależności,
- jedna historia zmian i jeden potok CI,
- repozytorium rośnie i wymaga narzędzi do zarządzania, np. Nx lub Turborepo,
- trudniej ograniczyć dostęp do wybranych części kodu.
Czy monorepo to monolit?
Nie. Monorepo opisuje sposób przechowywania kodu, a monolit sposób jego uruchamiania. W jednym repozytorium mogą żyć niezależne mikroserwisy i aplikacje wdrażane osobno.
Narzędzia takie jak Nx czy Turborepo przyspieszają budowanie dzięki buforowaniu wyników.