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())