Simple git hooks
npm install ghooks --save-dev
It is not advised to install ghooks
as a production dependency, as it will install git hooks in your production environment as well. Please install it under the devDependencies
section of your package.json
.
Please also note, that it is absolutely not advised to install ghooks
globally. To work as expected, make it a development dependency of your project(s).
Add a config.ghooks
entry in your package.json
and simply specify which git hooks you want and their corresponding commands, like the following:
{
…
"config": {
"ghooks": {
"pre-commit": "gulp lint",
"commit-msg": "validate-commit-msg",
"pre-push": "make test",
"post-merge": "npm install",
"post-rewrite": "npm install",
…
}
}
…
}
Note: The hooks' working directory is relative to the git root (where you have your .git
directory). This means that if your package.json is in a subdirectory of your git repository, you'll need to cd into the directory before running any npm scripts. E.g.:
"pre-commit": "cd path/to/folder && npm run test"
One of the last things you want is to raise the barrier to contributing to your open source project. So Andreas Windt developed the opt-cli package to allow you to turn your hooks into opt-in/out scripts. See this project's package.json
for an example of how to do that.
All documented hooks are available
- applypatch-msg
- pre-applypatch
- post-applypatch
- pre-commit
- prepare-commit-msg
- commit-msg
- post-commit
- pre-rebase
- post-checkout
- post-merge
- pre-push
- pre-receive
- update
- post-receive
- post-update
- pre-auto-gc
- post-rewrite
- Usage with git GUI clients – Thanks to @JamieMason
This module is heavily inspired by @nlf's precommit-hook
Huge thanks to everyone listed here!
This software is licensed under the MIT license