✅ WEB і WordPress новини, теми, плагіни. Тут ми ділимося порадами і кращими рішеннями для сайтів.

Як використовувати перехоплювачі Git для виявлення змін у файлі блокування та показу повідомлення

23

Коли ми працюємо над спільною командою, час від часу розробнику доводиться додавати новий пакет до гілки, який потім об’єднується з основним. Хтось може не знати про це та просто витягнути майстер і запустити програму лише для того, щоб вона вийшла з ладу через відсутність пакета. Давайте подивимося, як ми можемо використовувати перехоплювачі 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

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 перед тим, як щось зафіксувати для форматування коду.

Для цього конкретного випадку є альтернативи перевірити, чи package-lock.jsonбуло оновлено. Наприклад, для VS Code є чудовий пакет Refresh NPM Packages, який запропонує вам оновити пакети, якщо виявить модифікацію. Він працюватиме незалежно від того, налаштували ви перехоплення Git чи ні. Ще одна приємна річ – це працюватиме, коли ви змінюєте гілки, навіть без злиття однієї з них в іншу.

Як використовувати перехоплювачі Git для виявлення змін у файлі блокування та показу повідомлення

Однак перевага того, що ми тут реалізували, полягає в тому, що воно запускатиметься в командному рядку і не залежить від конкретного редактора коду. Наприклад, якщо ви працюєте над проектом з відкритим вихідним кодом, ви можете налаштувати те, що тут описано, щоб мати спільну основу для всіх залучених розробників, незалежно від їхніх налаштувань.

Джерело запису: startfunction.com

Цей веб -сайт використовує файли cookie, щоб покращити ваш досвід. Ми припустимо, що з цим все гаразд, але ви можете відмовитися, якщо захочете. Прийняти Читати далі