Releases: typicode/husky
v9.0.1
Kicking off the year with an exciting update!
Note: install using husky@latest
to get the bug fixes that were released after.
Introducing husky init
v8
npm pkg set scripts.prepare="husky install"
npm run prepare
npx husky add .husky/pre-commit "npm test"
v9
Adding husky to a project is now easier than ever. It's just a single line that does the same as above. No need to read the docs to get started anymore.
npx husky init
Adding a New Hook
v8
npx husky add .husky/pre-commit "npm test"
git add --chmod=+x .husky/pre-commit # On Windows
v9
Adding a hook is as simple as creating a file. This can be accomplished using your favorite editor, a script or a basic echo
command. For example, on Linux/macOS:
echo "npm test" > .husky/pre-commit
Further Size Reduction
v8
was already the most compact Git hooks manager at approximately 6kB
.
v9
takes this a step further, reducing the size to just 3kB
, likely making it the smallest devDependency in your toolkit.
To give you an idea of how small it is, the biggest file in the project is the MIT license π
More to Come
Additional features are in the pipeline for v9
. Stay tuned π
Other Changes
- Enhanced security with CI and npm
--provenance
for safer publishing. - Added
$XDG_CONFIG_HOME
support. Move~/.huskyrc
to~/.config/husky/init.sh
for centralized configuration. - Fixed permission issue for Windows-created hooks; they no longer need to be executable.
- Removed
husky install
. Usehusky
orhusky some/dir
for the same functionality (deprecation notice to be added). - Modified behavior when
.git
is missing; it now triggers a warning instead of failure. - Replaced
HUSKY_DEBUG=1
withHUSKY=2
for debugging. - Updated the Husky API for module usage.
- Transitioned to
ESM
for module usage. - Dropped support for Node 14 and 16.
- Revamped docs.
How to Migrate
v9
is backward compatible with v8
, allowing you to freely upgrade and migrate your hooks later.
Here are the steps to migrate:
package.json
{
"scripts": {
- "prepare": "husky install"
+ "prepare": "husky"
}
}
.husky/pre-commit
- #!/usr/bin/env sh
- . "$(dirname -- "$0")/_/husky.sh"
npm test
Note: sh
will be used to run hooks, even if a shebang is set.
If you were using husky
as a module:
- const husky = require('husky')
- // ...
+ import husky from 'husky'
+ console.log(husky())
v9.0.0
πΆ
v8.0.3
v8.0.2
v8.0.1
v8.0.0
What's Changed
Feats
- feat: add
husky -
prefix to logged global error messages by @joshbalfour in #1092 - feat: show
PATH
when command not found to improve debuggability - feat: drop Node 12 support
- feat: skip install if
$HUSKY=0
Fixes
- fix: hook script use
/usr/bin/env sh
instead of direct path ofsh
by @skhaz in #1051 - fix: actually set 'husky_skip_init' as readonly in
./husky.sh
by @hyperupcall in #1104 - fix: force
basename
/dirname
to treat$0
as an argument by @mataha in #1132 - fix: remove
git.io
links by @renbaoshuo in #1136
Docs
- docs: fix uninstall via npm by @pddpd in #1033
- docs: add dog emoji as favicon by @jamiehaywood in #1095
- docs: replace deprecated
npx --no-install
option withnpx --no
by @sibiraj-s in #1070 - docs: add
pnpm
installation by @MohamadKh75 in #1139
Chore
- chore: update workflows by @tiziodcaio in #1125
v7.0.4
v7.0.2
v7.0.1
v7.0.0
- Improve
.husky/
directory structure..husky/.gitignore
is now unnecessary and can be removed. - Improve error output (shorter)
- Update
husky-init
CLI - Update
husky-4-to-7
CLI - Drop Node 10 support
Please help me develop and release OSS projects β€οΈ on GitHub Sponsors or Open Collective. Thank you for your support!