Husky
Git hooks made easy
Description
Husky is an elixir version of the husky npm module.
Husky can prevent bad git commit, git push and more 🐶 ❤️ woof!
Installation
The Husky Hex package can be installed
by adding husky to your list of dependencies in mix.exs:
defp deps do
[
{:husky, "~> 1.0", only: :dev, runtime: false}
]
endUsage
-
On compile, husky will install git hook scripts (
mix husky.installto install manually) -
Configure git hook commands in either your
config/dev.exsor a.husky.jsonfile- Note:
config/dev.exswill take precedence over.husky.jsonif there are key conflicts
- Note:
Configure Git Hooks Using config/config.exs:
use Mix.Config
config :husky,
pre_commit: "mix format && mix credo --strict",
pre_push: "mix format --check-formatted && mix credo --strict && mix test"View example file config.example.exs
.husky.json
##### Configure Git Hooks Using `.husky.json`: ```JSON { "husky": { "hooks": { "pre_commit": "mix format && mix credo --strict", "pre_push": "mix format --check-formatted && mix credo --strict && mix test" } } } ``` View example file [.husky.example.json](./priv/.husky.example.json)
With the above setup:
git commitwill executemix formatandmix credo --strictand only commit if credo succeeds.git pushwill executemix format,mix credo, andmix test, and only push if all three commands succeed.git commit --no-verifystill commit even ifmix credo --strictfails
Skip script install
export HUSKY_SKIP_INSTALL=trueDelete
-
Remove git hook scripts
mix husky.delete
Documentation can found at https://hexdocs.pm/husky.
Contributing
See the development README.md