Ostatnio w jednym z projekt贸w u偶ywam https://turbo.build/. Turbo to narz臋dzie, kt贸re pozwala na 艂atwe zarz膮dzanie projektem typu monorepo w JS i TS.
Cz臋stym problemem jest trudno艣膰 w odpalaniu kilku projektu na raz. Dzi臋ki Turbo, mo偶na zdefiniowa膰 projekty i odpala膰 je z jednego miejsca, za pomoc膮 wsp贸lnego polecenia Turbo run. Wykona ono na przyk艂ad wszystkie zadania build lub dev z package json. Dodatkowo, je艣li baza kodu si臋 nie zmieni艂a, wynik zostanie zwr贸cony z cache. Mo偶na to skonfigurowa膰 tak偶e po stronie serwera.
Turbo pozwala na 艂atwe wyodr臋bnianie sp贸jnych aplikacji i bibliotek. Przyk艂adowo, mo偶esz wydzieli膰 sobie aplikacj臋 webow膮 oraz api i wrzuci膰 je do folderu apps. Nast臋pnie, mo偶esz utworzy膰 folder packages, w kt贸rym b臋dziesz w p艂askiej strukturze przechowywa艂:
- modele (interfaces)
- konfiguracje eslinta
- serwisy HTTP dla Angulara (je艣li masz tak膮 fantazj臋)
- reu偶ywalne komponenty
Dzi臋ki temu, mo偶na 艂atwo potem doda膰 jeszcze inny rodzaj aplikacji, kt贸ry skorzysta ze wsp贸艂dzielonej bazy kodu. Jest to 艣wietnie rozwi膮zanie w pracy, gdy zwykle tworzymy wi臋cej ni偶 jedn膮 aplikacj臋. Spotka艂em si臋 z sytuacjami, kiedy dla kilku takich samych aplikacji musimy osobno instalowa膰 eslint czy Jest i nast臋pnie wielokrotnie dodawa膰 te same konfiguracje. Turbo znacznie upraszcza ten proces.
Ka偶da aplikacja jest osobn膮 paczk膮 z plikiem package.json, kt贸r膮 mo偶na zainstalowa膰 jak standardow膮, wersjonowan膮 paczk臋 npm w obr臋bie repozytorium.
Minusem Turbo jest do艣膰 trudna konfiguracja udost臋pniania plik贸w z jednej paczki do drugiej. W teorii jest to proste, w praktyce napotka艂em na wiele mo偶liwych ustawie艅 (z pliku TS, z package jsona albo ze skompilowanych plik贸w TS).
Podsumowuj膮c, Turbo zapewnia sp贸jn膮 obs艂ug臋 monorepo i zach臋ca nas do dzielenia kodu na reu偶ywalne paczki. Z mojej perspektywy jest prostsze ni偶 Nx, jednocze艣nie oferuj膮c nieco mniej mo偶liwo艣ci.