Git Hooks
Git Hooks to narzędzie pozwalające na automatyzację zadań w repozytorium git. Działają jak skrypty, które wykonują się w określonych momentach cyklu życia commitów, pushów i innych operacji. Dzięki nim możesz wprowadzić dodatkowe zabezpieczenia, automatyczne formatowanie kodu czy uruchamianie testów przed zmergowaniem zmian.
Najpopularniejsze git hooks:
- pre-commit: Uruchamiany przed zapisaniem
commita, umożliwia sprawdzenie kodu pod kątem błędów, uruchomienie testów lub formatowanie kodu. - commit-msg: Uruchamiany po wpisaniu komunikatu
commit, pozwala na weryfikację formatowania i zgodności komunikatu z ustalonymi konwencjami. - pre-push: Uruchamiany przed wysłaniem zmian do zdalnego repozytorium, umożliwia uruchomienie testów i weryfikację jakości kodu.
W kontekście bibliotek komponentów, git hooks mogą być używane do automatyzacji takich działań jak:
- Formatowanie kodu - Za pomocą
pre-commithooka możesz uruchamiać narzędzia takie jakPrettierczyESLint, aby upewnić się, że kod zawsze jest sformatowany zgodnie z ustalonym stylem. - Testy jednostkowe - Przy każdym commicie (hook
pre-commit) lub przed pushem (pre-push), możesz uruchomić testy jednostkowe za pomocąJestlub innego frameworka testowego. - Sprawdzanie typów - Jeśli w bibliotece komponentów korzystasz z TypeScript, hooki mogą uruchamiać kompilator TypeScript (
tsc). - Kontrola commit message - Dzięki hookowi
commit-msgmożesz sprawdzić, czy wiadomości commitów spełniają określone reguły, np. zgodność z konwencjąConventional Commits. Może to być szczególnie przydatne, jeśli korzystasz z narzędzi takich jaksemantic-releasedo automatyzacji wersjonowania i publikacji.
Aby zautomatyzować zarządzanie git hooks w projekcie, warto wykorzystać narzędzie takie jak husky, które upraszcza tworzenie i zarządzanie hookami w projekcie git. Dzięki Husky, zamiast ręcznie tworzyć skrypty w folderze .git/hooks, możesz zarządzać hookami bezpośrednio w pliku package.json, co sprawia, że ich konfiguracja jest znacznie łatwiejsza.
Upewnij się również, że wszyscy członkowie zespołu są świadomi, jakie git hooks są używane w projekcie i jakie zadania są automatyzowane. Dokumentacja powinna zawierać informacje o celach i konfiguracji poszczególnych hooków.