Skip to content
Simple git hooks
Branch: master
Clone or download
josephschmitt and gtramontina fix: node_modules absolute entry point never getting found (#224)
According to the docs ( path.resolve only ever throws for type errors (if any of the arguments aren't a string), not if the path does not exist. For that we have to use fs.stat/statSync.
Latest commit 1e80ce2 Apr 28, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
lib fix: node_modules absolute entry point never getting found (#224) Apr 29, 2018
test fix: node_modules absolute entry point never getting found (#224) Apr 29, 2018
.editorconfig Installer and hook runner. Apr 29, 2014
.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 docs: Update with convention link Jun 7, 2016
LICENSE Change to MIT license, because it's a real license. Nov 21, 2015 docs(readme): replace gtramontina with ghooks-org Nov 25, 2017
appveyor.yml build: run tests on newer versions of node Nov 25, 2017
package.json fix: add eslint's peer dependencies Nov 25, 2017


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 repo, 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.