Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Бывают определенные действия, которые надо обязательно выполнить до того как код попадет в коммит и репозиторий, чтобы, как минимум, не мучиться потом с 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"
],
Теперь прямо перед коммитом сразу собирается бандл и добавляется в коммит. Если нужен полный работающий пример, он есть в репозитории этой библиотечки: https://github.com/syncro/key-toggler