Pull to refresh

Перед коммитом

Reading time1 min
Views7.3K

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

Самое очевидное назначение - это выполнение тестов, но для меня это также и сборка бандла. Поскольку я не использую watch и регулярно забываю запускать команду билда руками, в коммит частенько заезжают неактуальные версии бандлов, а актуальные приходится коммитить следом. Выходит не очень опрятно. Для javascript нам поможет утилита pre-commit. Она использует hook гита, но дает возможность не лезть во все эти внутренности и управлять галактикой не выходя из npm. Кроме того, такая механика не будет забыта при смене репозитория.

Пойдем практическим путем: добавляем библиотеку в проект

npm i pre-commit --save-dev

В package.json в секцию pre-commit добавляем комманду build

"pre-commit": [
 "build"
],

Однако, собранные файлы бандла не попадут в коммит, т.к. гиту надо явно указывать измененные и добавленные файлы и добавлять все подряд выглядит довольно опасным. Чтобы все начало правильно работать определим команду add-bundles добавляющую файлы бандла.

"scripts": {
 "build": "npx rollup --config rollup.config.js",
 "add-bundles": "git add dist/*",
 "test": "echo \"Error: no test specified\" && exit 1"
},

И саму команду добавляем в секцию pre-commit

"pre-commit": [
 "build", "add-bundles"
],

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

У данного пакета есть аналоги и для других хуков, например, этот.

Tags:
Hubs:
Total votes 23: ↑5 and ↓18-13
Comments68

Articles