Git hooks made easy
Husky can prevent bad git commit
, git push
and more 🐶 woof!
You're viewing the documentation for the next version of husky, click here if you prefer to use the stable release
npm install husky@next --save-dev
// package.json
{
"husky": {
"hooks": {
"pre-commit": "npm test",
"pre-push": "npm test",
"...": "..."
}
}
}
git commit -m 'Keep calm and commit'
By default, husky expects your project's package.json
and your .git
directory to be at the same level. It can be configured to support monorepos or sub-directories.
Check documentation for more.
npm uninstall husky
If you're upgrading from 0.14
, simply move your hooks to husky.hooks
:
{
"scripts": {
- "precommit": "npm test"
},
+ "husky": {
+ "hooks": {
+ "pre-commit": "npm test"
+ }
+ }
}
Or run the following command which will do the same automatically for you ;)
./node_modules/.bin/husky-upgrade
Alternatively, you can also use any of the files/formats that are supported by cosmiconfig. This means that you can place your husky hooks config in a .huskyrc
file or export them from a husky.config.js
file as well. Cosmiconfig supports js
, json
, and yaml
file formats.
- Keeps existing user hooks
- Supports GUI Git clients
- Supports all Git hooks (
pre-commit
,pre-push
, ...) - Auto-migrates Git hooks installed by
ghooks
- jQuery
- babel
- create-react-app
- Next.js
- Hyper
- Kibana
- JSON Server
- Hotel
- ... and 12k+ other awesome repos 🎉
- pkg-ok - Prevents publishing a module with bad paths or incorrect line endings
- please-upgrade-node - Show a message to upgrade Node instead of a stacktrace in your CLIs
- react-fake-props - Fake props for your React tests
MIT - Typicode 🌵 - Patreon