Product
Introducing License Enforcement in Socket
Ensure open-source compliance with Socket’s License Enforcement Beta. Set up your License Policy and secure your software!
Prevents bad commit or push (git hooks, pre-commit/precommit, pre-push/prepush, post-merge/postmerge and all that stuff...)
Husky is an npm package that allows you to manage Git hooks easily. It lets you run scripts at specific points in your Git workflow, such as before committing or pushing code. This helps in automating tasks like code linting, testing, and validation before these actions take place, ensuring code quality and consistency.
Pre-commit Hook
This feature allows you to run commands before a commit is made. In this example, `npm test` and `npm run lint` are executed before each commit, ensuring that tests pass and the code is linted.
"husky": {
"hooks": {
"pre-commit": "npm test && npm run lint"
}
}
Pre-push Hook
This feature allows you to run commands before code is pushed to the repository. In this example, `npm run build` is executed before each push, ensuring that the build is updated.
"husky": {
"hooks": {
"pre-push": "npm run build"
}
}
Commit-msg Hook
This feature allows you to run a script to validate the commit message. In this example, `validate-commit-msg.js` is a script that checks if the commit message follows a certain format.
"husky": {
"hooks": {
"commit-msg": "./validate-commit-msg.js"
}
}
Lint-staged is similar to Husky in that it is often used in conjunction with Husky to run linters on staged files in Git. It does not manage Git hooks itself but is designed to run scripts on files that are staged for commit.
Pre-commit is a framework for managing and maintaining multi-language pre-commit hooks. It is similar to Husky but is language-agnostic and can be used outside of the Node.js ecosystem. It requires a separate installation and configuration.
Git hooks made easy
Husky can prevent bad git commit
, git push
and more 🐶 ❤️ woof!
To all the amazing people who have answered the Husky survey, thanks so much <3 !
npm install husky --save-dev
// package.json
{
"husky": {
"hooks": {
"pre-commit": "npm test",
"pre-push": "npm test",
"...": "..."
}
}
}
git commit -m 'Keep calm and commit'
To go further, see the docs here.
npm uninstall husky
If you're upgrading from 0.14
, simply move your hooks to husky.hooks
field:
{
"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.
To view the full list of changes, please see the CHANGELOG.
pre-commit
, pre-push
, ...)MIT
Patreon - Supporters ✨
FAQs
Modern native Git hooks
The npm package husky receives a total of 10,057,114 weekly downloads. As such, husky popularity was classified as popular.
We found that husky demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Ensure open-source compliance with Socket’s License Enforcement Beta. Set up your License Policy and secure your software!
Product
We're launching a new set of license analysis and compliance features for analyzing, managing, and complying with licenses across a range of supported languages and ecosystems.
Product
We're excited to introduce Socket Optimize, a powerful CLI command to secure open source dependencies with tested, optimized package overrides.