Čo Hatch robí
- Paralelný PubGrub resolver pre balíky z pub.dev.
- Odstraňuje z balíkov súbory, ktoré build nepotrebuje, a ukladá ich do globálnej cache zdieľanej všetkými projektmi na stroji.
- Povinne overuje kontrolné súčty SHA-256.
- Pripína verziu Flutter SDK cez FVM.
- Skripty v manifeste a systém pluginov.
- Plugin hatch-ios, ktorý je zatiaľ čiastočne funkčný, má zostaviť, podpísať a nahrať iOS aplikáciu do TestFlightu aj bez Macu.
Príkazy
- Projekt: init, migrate (z pubspec.yaml do hatch.json), install, add, remove, update, why a run pre skripty.
- Nástroje: fvm (list, use, install, sync), sdk-update, cache stats, cache prune a cache clear, plugin install, list a remove.
- Prepínače: -v až -vvv, -q, --profile, --project-dir a --allow-unchecksummed.
- Plugin ios: ios build --sign --upload.
Rýchlosť
Rýchlosť vychádza z piatich techník: cache podľa hashu manifestu, intervalová propagácia, ktorá preskočí plné riešenie pri bezkonfliktných závislostiach, paralelné sťahovanie metadát, paralelné riešenie nezávislých podgrafov a PubGrub pre zvyšok. Benchmarky sú v adresári benches/ v repozitári.
Aké problémy rieši
- Pomalé riešenie závislostí, vďaka paralelnému resolveru a cache.
- Nafúknuté balíky s adresármi example, test, doc a CI: Hatch ich pri rozbalení odstráni. Dá sa to vypnúť cez HATCH_DEBLOAT=0 alebo doladiť pre balík v súbore .hatch.json.
- Duplicitné kópie balíkov v každom projekte, vďaka zdieľanej cache, ktorú možno presunúť cez HATCH_CACHE_DIR.
- Rozdielne verzie na rôznych strojoch a v CI, vďaka FVM, súboru zámku a deterministickému riešeniu.
- Neoverené sťahovania a nedôveryhodné skripty závislostí: povinný SHA-256 a potvrdenie pri prvom spustení, CI skripty štandardne zamieta.
- Prihlasovacie údaje mimo manifestu: ukladajú sa do súboru hatch_auth.json mimo gitu alebo do premenných HATCH_NEST_*.
Stav
Hatch je zverejnený vo verzii 0.2.0 s licenciou MIT alebo Apache-2.0. Zdrojový kód a inštalačné balíky pre Windows, macOS a Linux sú na GitHube. Funguje riešenie z pub.dev, závislosti na lokálne cesty, odstraňovanie nepotrebných súborov, správa cache, kontrolné súčty, FVM, migrácia a skripty. Čiastočne funguje register pluginov, iOS build bez Macu a profily. Závislosti z gitu a súkromný register sú v pláne.
Technológia
Nástroj je napísaný v Ruste ako jeden statický binárny súbor.