✅ Nowości, motywy, wtyczki WEB i WordPress. Tutaj dzielimy się wskazówkami i najlepszymi rozwiązaniami dla stron internetowych.

Jak używać zaczepów Git do wykrywania zmian w pliku blokady i wyświetlania komunikatu?

9

Kiedy pracujemy w zespole, od czasu do czasu programista musi dodać nowy pakiet do brancha, który jest następnie scalany w master. Ktoś może być nieświadomy tego i po prostu ściągnij master i uruchom aplikację tylko po to, aby zawiesić się z powodu brakującego pakietu. Zobaczmy, jak możemy użyć zaczepów Git do wykrywania zmian w a package.jsonlub a yarn.locki wyświetlić komunikat zachęcający użytkownika do zainstalowania brakujących zależności.

Czym są haki Git?

Zaczepy Git są uruchamiane, gdy wystąpi jakieś zdarzenie Git, takie jak nowe zatwierdzenie, wypychanie zatwierdzeń do gałęzi online, ściąganie zatwierdzeń, wyewidencjonowanie gałęzi lub scalenie gałęzi. Procesy te kończą się zerem, gdy kończą się poprawnie, lub inną wartością, gdy kończą się niepoprawnie.

Jeśli zaczepiony proces kończy się na 0, akcja Git jest kontynuowana. W przeciwnym razie akcja Git zostanie zablokowana. Na przykład, jeśli skonfigurujesz zaczep Git przed zatwierdzeniem do lintowania kodu, Git uruchomi to, gdy wykonasz git commit. Jeśli lint się nie powiedzie, zatwierdzenie nie przejdzie.

Haki Git są czymś zintegrowanym z Git, a ich lista jest bardzo obszerna. Na przykład masz pre-push, post-commit, post checkout, post-merge i wiele innych hooków Git.

Uruchom haki Git z Husky

Aby uruchomić niektóre zadania po uruchomieniu hooków Git, możemy użyć pakietu Husky dla Node.js. Husky pozwala nam określić w package.jsonpliku, które skrypty mają być uruchamiane po uruchomieniu hooków Git. Zainstaluj pakiet Husky z NPM:

npm i -D husky

lub Przędza:

yarn add -D husky

Teraz musisz zainicjować Husky dla haków Git. Jeśli używasz NPM:

npx husky install

a jeśli używasz przędzy

yarn husky install

i to wszystko, zainstalowałeś i skonfigurowałeś Husky do uruchamiania haków Git. W końcu nadszedł czas na zdefiniowanie haka!

Dodaj zaczep Git po scaleniu, aby sprawdzić zmiany w pliku blokady

Chcemy uruchomić jakiś kod, aby ostrzec nas, jeśli pliki package-lock.jsonlub yarn.lockuległy zmianie. Dzieje się tak zwykle, gdy ściągamy masteri te pliki się zmieniły. Możemy skonfigurować podpięcie do uruchomienia, gdy scalimy gałąź.

Aby określić nasze haki Git dla Husky’ego, definiujemy je w package.jsonpliku. Dodaj to jako klucz najwyższego poziomu:

"husky": { "hooks": { "post-merge": "./githooks/post-merge-hook.sh" } }

Oznacza to, że po scaleniu gałęzi uruchomimy ten skrypt. Teraz musimy go stworzyć. Utwórz folder, dodaj do niego plik i ustaw go jako wykonywalny:

mkdir githooks && cd githooks && touch post-merge-hook.sh && chmod +x post-merge-hook.sh

Jeśli nie ustawisz go jako wykonywalnego, napotkasz błąd „Odmowa dostępu", gdy Husky spróbuje uruchomić ten hak Git. Teraz edytuj plik za pomocą Vima lub swojego ulubionego edytora i wklej do niego to:

changedFiles="$(git diff-tree -r --name-only --no-commit-id ORIG_HEAD HEAD)" runOnChange() { echo "$changedFiles" | grep -q "$1" && echo -e "$2" } runOnChange package-lock.json "033[35m*******************************************************************************n* 033[33mpackage-lock.json033[35m has changed. Run033[33m npm install033[35m to update your dependencies. *n*******************************************************************************" exit 0

Spowoduje to wydrukowanie wiadomości na fioletowo ze słowami package-lock.jsoni npm installna pomarańczowo. Ten skrypt sprawdza, czy package-lock.jsonzostał zaktualizowany i jeśli chcesz yarn.lockzamiast tego przetestować, musisz po prostu zastąpić nazwę pliku.

Przetestuj sprawdzanie zmiany pliku blokady

Testowanie tego nie jest zbyt skomplikowane. Zasadniczo wystarczy utworzyć nową gałąź, zainstalować pakiet, aby package-lock.jsonzostał zmodyfikowany, zatwierdzić go i przejść do poprzedniej gałęzi. Wszystko, co można zrobić za pomocą tego polecenia:

git checkout -b testbranch && npm i -D lint-staged && git add. && git commit -m "test" && git checkout -

Teraz musisz połączyć go z tą gałęzią

git merge testbranch

Spowoduje to uruchomienie przechwycenia post-merge i uruchomienie naszego skryptu. Zobaczysz ten komunikat w wierszu poleceń, ponieważ package-lock.jsonzostał zmodyfikowany podczas scalania:

Wykrywanie zmiany pliku blokady w VS Code

To był tylko jeden użytek. Zaczepy Git mogą być używane na wiele sposobów, na przykład do uruchomienia popularnego pakietu Prettier przed zatwierdzeniem czegoś w celu sformatowania kodu.

Istnieją alternatywy dla tego konkretnego przypadku, sprawdzania, czy package-lock.jsonzostał zaktualizowany. Na przykład dla VS Code istnieje sprytny pakiet Odśwież pakiety NPM, który poprosi o zaktualizowanie pakietów, jeśli wykryje modyfikację. Będzie działać niezależnie od tego, czy masz skonfigurowane zaczepy Git, czy nie. Kolejną fajną rzeczą jest to, że zadziała, gdy zmienisz gałęzie, nawet bez łączenia jednej z nich w drugą.

Jak używać zaczepów Git do wykrywania zmian w pliku blokady i wyświetlania komunikatu?

Jednak zaletą tego, co tutaj zaimplementowaliśmy, jest to, że będzie działać w wierszu poleceń i nie zależy od konkretnego edytora kodu. Jeśli pracujesz na przykład nad projektem open source, możesz chcieć skonfigurować to, co opisano tutaj, aby wszyscy zaangażowani deweloperzy mieli wspólną płaszczyznę, niezależnie od ich konfiguracji.

Źródło nagrywania: startfunction.com

Ta strona korzysta z plików cookie, aby poprawić Twoje wrażenia. Zakładamy, że nie masz nic przeciwko, ale możesz zrezygnować, jeśli chcesz. Akceptuję Więcej szczegółów