✅ Новости WEB и WordPress, темы, плагины. Здесь мы делимся советами и лучшими решениями для веб-сайтов.

Как использовать перехватчики Git для обнаружения изменений в файле блокировки и отображения сообщения

36

Когда мы работаем в совместной команде, время от времени разработчику приходится добавлять новый пакет в ветку, которая затем объединяется с основной. Кто-то может не знать об этом и просто вытащить master и запустить приложение только для того, чтобы оно вылетело из-за отсутствующего пакета. Давайте посмотрим, как мы можем использовать ловушки Git для обнаружения изменений в a package.jsonили a yarn.lockи отображения сообщения, предлагающего пользователю установить отсутствующие зависимости.

Что такое Git-хуки?

Перехватчики Git запускаются, когда происходит какое-либо событие Git, такое как новая фиксация, отправка коммитов в онлайн-ветку, получение коммитов, извлечение ветки или слияние ветки. Эти процессы заканчиваются 0, если они завершаются правильно, или другим значением, если они завершаются неправильно.

Если перехваченный процесс заканчивается 0, действие Git продолжается. В противном случае действие Git блокируется. Например, если вы настроите хук Git перед фиксацией для анализа вашего кода, Git запустит его, когда вы сделаете git commit. Если lint завершится неудачно, фиксация не пройдет.

Git-хуки интегрированы в Git, и их список очень обширен. Например, у вас есть pre-push, post-commit, post-checkout, post-merge и многие другие хуки Git.

Запускайте хуки Git с помощью Husky

Чтобы запустить некоторые задачи при срабатывании хуков Git, мы можем использовать пакет Husky для Node.js. Husky позволяет указать в package.jsonфайле, какие скрипты запускать при срабатывании перехватчика Git. Установите пакет Husky с помощью NPM:

npm i -D husky

или пряжа:

yarn add -D husky

Теперь вам нужно инициализировать Husky для хуков Git. Если вы используете NPM:

npx husky install

и если вы используете пряжу

yarn husky install

вот и все, теперь вы установили и настроили Husky для запуска Git-хуков. Наконец-то пришло время определить крючок!

Добавьте хук Git после слияния, чтобы проверить изменения файла блокировки.

Мы хотим запустить некоторый код, чтобы предупредить нас, если файлы package-lock.jsonили yarn.lockизменились. Это происходит обычно, когда мы тянем masterи эти файлы изменились. Мы можем настроить хук для запуска при слиянии ветки.

Чтобы указать наши хуки Git для Husky, мы определяем их в package.jsonфайле. Добавьте это как ключ верхнего уровня:

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

Это говорит о том, что после слияния ветки мы запустим этот скрипт. Теперь нам нужно его создать. Создайте папку, добавьте в нее файл и сделайте его исполняемым:

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

Если вы не настроите его как исполняемый, вы столкнетесь с ошибкой «Отказано в доступе», когда Husky попытается запустить этот хук Git. Теперь отредактируйте файл с помощью Vim или вашего любимого редактора и вставьте в него это:

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

Это напечатает сообщение фиолетовым цветом со словами package-lock.jsonи npm installоранжевым цветом. Этот скрипт проверяет, был ли package-lock.jsonон обновлен, и если вы хотите проверить yarn.lockвместо этого, вам просто нужно заменить имя файла.

Протестируйте проверку изменения файла блокировки

Проверить это не так уж сложно. В основном вам просто нужно создать новую ветку, установить какой-нибудь пакет, чтобы package-lock.jsonон был изменен, зафиксировать его и переключиться на предыдущую ветку. Все что можно сделать этой командой:

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

Теперь вам нужно объединить его с этой веткой

git merge testbranch

Это вызовет хук после слияния и запустит наш скрипт. Затем вы увидите это сообщение в командной строке, потому что package-lock.jsonон был изменен во время слияния:

Обнаружение изменения файла блокировки в VS Code

Это было только одно использование. Git-хуки можно использовать по-разному, например, для запуска популярного пакета Prettier до того, как вы что-то сделаете для форматирования своего кода.

Есть альтернативы для этого конкретного cas, проверки того, package-lock.jsonбыл ли обновлен. Например, для VS Code есть отличный пакет Refresh NPM Packages, который предложит вам обновить ваши пакеты, если обнаружит модификацию. Он будет работать независимо от того, настроили ли вы хуки Git или нет. Еще приятно то, что он будет работать при переключении веток, даже без слияния одной из них с другой.

Как использовать перехватчики Git для обнаружения изменений в файле блокировки и отображения сообщения

Однако преимущество того, что мы здесь реализовали, заключается в том, что оно будет работать в командной строке и не зависит от конкретного редактора кода. Если вы работаете, например, над проектом с открытым исходным кодом, вы можете настроить то, что описано здесь, чтобы у всех разработчиков была общая основа, независимо от их настройки.

Источник записи: startfunction.com

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее