Skip to content
Simple git hooks
Branch: master
Clone or download
dependabot-preview and gtramontina build(deps-dev): update cz-conventional-changelog requirement
Updates the requirements on [cz-conventional-changelog]( to permit the latest version.
- [Release notes](
- [Commits](commitizen/cz-conventional-changelog@v1.2.0...v2.1.0)

Signed-off-by: dependabot-preview[bot] <>
Latest commit 569eb3c Jul 4, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin build: ditch transpilation Nov 25, 2017
test build(deps-dev): update sinon requirement from 1.17.7 to 4.5.0 Jun 25, 2019
.editorconfig chore: cleanup unnecessary settings Jun 23, 2019
.eslintrc fix: installation on Node 7 and below (#220) Nov 29, 2017
.gitignore fix: lookup node_modules using relative path Apr 16, 2018
.npmignore build: ditch transpilation Nov 25, 2017
.travis.yml chore(build): increase the range of node versions to test Jun 23, 2019 docs: add code of conduct Jun 25, 2019 docs: cleanup docco Jun 23, 2019
LICENSE Change to MIT license, because it's a real license. Nov 21, 2015 docs: cleanup docco Jun 23, 2019
appveyor.yml chore(build): increase the range of node versions to test Jun 23, 2019
package.json build(deps-dev): update cz-conventional-changelog requirement Jul 4, 2019


version travis build AppVeyor codecov coverage Dependencies status Dev Dependencies status

MIT License downloads semantic-release Commitizen friendly

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

Common Issues


This module is heavily inspired by @nlf's precommit-hook


Huge thanks to everyone listed here!


This software is licensed under the MIT license

You can’t perform that action at this time.