Creating Git Hooks Using Husky

Creating Git Hooks Using Husky

Hooks in git are nothing but some code which can be executed at specific points during git execution process

Hooks in git are nothing but some code that can be executed at specific points during the git execution process.

They are used to verify everything is as expected before or after executing a git command or action. Some common applications include formatting the code before committing, performing build steps before pushing the code to production, etc.

You can create hooks in the .git/hooks directory but you can automate the process using husky!

Prerequisites :- nodejs

Installing Husky

npm install husky --save-dev

Initializing Git Hooks

npx husky install

This will enable you to add git hooks to your project.

One thing to note here is that when collaborating, contributors need to run this command after cloning the project to enable git hooks. But you can bypass this step by adding a prepare script in your package.json file.

It will run when you do npm install in your project so you don't need to perform npx husky install manually.

To do so, add the following script to package.json,

"scripts": {
    "prepare": "husky install"
}

But there's another catch. The prepare script will also run in production but you need it in production as such, so there are many ways to disable it in production, one of which is by using the is-ci npm package.

The is-ci package will check if the code is executed in a continuous integration server or not.

npm install is-ci --save-dev

Just change the prepare script to the following.

"scripts": {
    "prepare": "is-ci || husky install"
}

Adding Git Hooks

For example, if you want to format your code using a formatting tool before committing the code, you can add git hook to do that using the following command:

npx husky add .husky/pre-commit "npm run format"

Replace npm run format with the command which will format your code.

You can replace pre-commit with some other hook such as pre-push, post-commit, post-checkout, etc.

Another example could be if you want to minify javascript before pushing to production, you can use pre-push git hook.

npx husky add .husky/pre-push "npm run minjs"
"scripts": {
    "minjs": "terser js/app.js --compress --mangle --output js/app.min.js"
}

Find the list of various git hooks on the official git site.

You will see a .husky folder is created in your project and inside it there will be files for all the git hooks which you created.

Make sure to run git add after you make any changes. Finally, run the git command or action and your git hooks will be executed.

That's it. For more applications of git hooks, read this article.

Signing off.

Did you find this article valuable?

Support ReactPlay Blog by becoming a sponsor. Any amount is appreciated!