typicode/husky (husky)
Compare Source
What's Changed
New Contributors
Full Changelog: typicode/husky@v9.1.6...v9.1.7
Compare Source
What's Changed
- Fix issue where example pre-commit file is generated incorrectly by @dexmlee in #1519
New Contributors
Full Changelog: typicode/husky@v9.1.5...v9.1.6
Compare Source
What's Changed
New Contributors
Full Changelog: typicode/husky@v9.1.4...v9.1.5
Compare Source
- Improve deprecation notice
Compare Source
- fix: better handle space in
PATH
Compare Source
Show a message instead of automatically removing deprecated code.
This only concerns projects that still have the following code in their hooks:
- #!/usr/bin/env sh # <- This is deprecated, remove it
- . "$(dirname -- "0ドル")/_/husky.sh" # <- This is deprecated, remove it
### Rest of your hook code
Hooks with these lines will fail in v10.0.0
Compare Source
Super saiyan (削除) god (削除ここまで) dog! It's over 9.0.0!
What's new
You can now run package commands directly, no need for npx or equivalents.
It makes writing hooks more intuitive and is also slightly faster 🐺⚡️
### .husky/pre-commit
- npx jest
+ jest # ~0.2s faster
A new recipe has been added to the docs. Lint staged files without external dependencies (inspired by Prettier docs). Feel free to modify it.
### .husky/pre-commit
prettier $(git diff --cached --name-only --diff-filter=ACMR | sed 's| |\\ |g') --write --ignore-unknown
git update-index --again
For more advanced use cases, see lint-staged.
Fixes
bunx husky init command
- Workaround for some hooks implementation on Windows
Deprecations
#!/usr/bin/env sh and . "$(dirname -- "0ドル")/_/husky.sh" are deprecated. husky command will automatically remove them, no action required.
- If you're having code in
~/.huskyrc please move it to .config/husky/init.sh
Support for these will be removed in v10.
Friendly reminder
If Git hooks don't fit your workflow, you can disable Husky globally. Just add export HUSKY=0 to .config/husky/init.sh.
I've seen some confusion about this on X, so just a heads-up!
Sponsoring
Husky is downloaded over 45M times per month and used by ~1.5M projects. If your company wants to sponsor, you can do so here: GitHub Sponsors.
Have a nice summer ☀️ I'm open to new opportunities/consulting so feel free to drop me a message 😉
Compare Source
Compare Source
Compare Source
Compare Source
Compare Source
Compare Source
- fix: typo and source
~/.huskyrc correctly (compatibility with v8)
- docs: fix example by @typicode in #1363
Compare Source
Compare Source
Compare Source
Compare Source
Compare Source
Compare Source
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.
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. Use husky or husky 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 with HUSKY=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())
Compare Source
- fix: add git not installed message #1208
Compare Source
- docs: remove deprecated npm set-script
Compare Source
- fix: use POSIX equality operator
Compare Source
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
Docs
Chore
Compare Source
No changes. Husky v7.0.3 was reverted, this version is the same as v7.0.2.
Compare Source
Compare Source
Fix pre-commit hook in WebStorm (#1023)
Compare Source
- Fix gracefully fail if Git command is not found #1003 (same as in v6)
Compare Source
- 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!
Compare Source
After being in early access for Open Source projects and Sponsors for a limited time, I'm happy to announce that husky 6 is MIT again and can be freely used in commercial projects! 🎉
Many thanks to the Open Source projects and Companies which have switched to/sponsored the new husky during this period!
OSS is my full-time job, please consider sponsoring the development of husky on GitHub sponsors or Open Collective. Thank you!
Breaking change
husky init has been moved to its own package (npx husky-init)
Added
- Programmatically use husky:
require('husky')
- TypeScript definitions
Migrating from husky 4
Husky 6 contains breaking changes. If you're coming from v4, npm install husky@6 won't be enough.
Recommended: see husky-4-to-6 CLI to automatically migrate your config. There's also a dedicated section in the docs.
If you're curious why config has changed, you may be interested in reading:
https://blog.typicode.com/husky-git-hooks-javascript-config/
Also Husky 6 follows official npm and Yarn best practices regarding autoinstall. It's recommended to use prepare script instead (see usage in docs).
Compare Source
- Add
set command to replace hooks (husky set .husky/pre-commit cmd)
- Update
add command to append command (husky add .husky/pre-commit cmd)
- Improve error messages
Compare Source
- docs: add specific Yarn v2 install/uninstall instructions
- cli:
husky init will detect Yarn v2 and initialize accordingly
Compare Source
- docs: recommend
prepare script instead of postinstall (#890)
- cli:
husky init use prepare script (#890)
Compare Source
- style(shell): add trailing newlines (#870)
- fix(init): update package.json postinstall
Compare Source
Compare Source
- fix(install): do not fail if not inside a Git directory (closes #851)
See https://github.com/typicode/husky/releases/tag/v5.0.0 for v5 release notes
Compare Source
- fix(install): better handle Git <2.9 (#846) closes #844
Compare Source
- fix(shell): double quote params (#824)
Compare Source
Compare Source
- Fix custom directory support #827
Compare Source
Compare Source
Compare Source
Compare Source
Compare Source
👉 See https://typicode.github.io/husky for breaking changes and new installation instructions.
Note about the license
Husky 5 is released under The Parity Public License.
It doesn't affect you if you're using husky in an Open Source project or if you're a sponsor. You're free to use it as usual and I hope you'll enjoy this new release ❤️
If you're using husky in a commercial project, you may want to consider becoming a sponsor to support the project. You can also try it for 30 days.
This is only for a limited time, husky will be MIT again later.
Migrating
Important Husky v5 brings a lot of improvements but is also very different from v4. Git hooks won't work if you only upgrade husky dependency, existing config needs to be migrated too.
The best way to switch to v5 is to follow the new installation instructions and migrate existing hooks command using husky add.
Compare Source
- Fix
Cannot read property 'toString' of null
- Improve error messages
Compare Source
- Fix: upgrade find-versions to 4.0.0 #837
Compare Source
- Fix
prepare-commit-msg on windows #737
Compare Source
- Rollback and do not throw error if husky install fails
Compare Source
- Throw error if husky install fails
- Add workaround for npm 7 currently missing
INIT_CWD environment variable
Compare Source
Compare Source
Compare Source
Compare Source
- Add
.cjs config file support #754
Compare Source
- Fix wrong error message #709
- Update dependencies #710
Compare Source
- When Node version is unsupported, log actual version in addition to the error message #701
- Fix: support
cnpm package manager #687
- Fix: always use
sh to run scripts and avoid inconsistencies #707
- Fix: don't throw error if files are already removed during uninstall #708
Compare Source
- Fix: check for
husky.config.js not .huskyrc.config.js #669
Compare Source
- Fix #662 disable fast-skip heuristic for
.husky.js and .husky.config.js
- Fix do not install
update, pre/post-receive hooks
Compare Source
- Fix: support spaces in path to husky.local.sh #658
Compare Source
- Check Git version during install and log an error if it's
<2.13.0
Compare Source
- Improve speed and refactor hooks
Compare Source
Compare Source
- Fix: read stdin from hook script (#645)
Compare Source
Compare Source
- Fix: Yarn when running inside
winpty (#634)
Compare Source
Compare Source
- Fix: use process.exit if install fails #633
Compare Source
- Fix: npm ignore
.eslintrc.js (#627)
Compare Source
- Fix: error message if trying to install in a non-git repo (#627)
Compare Source
- Fix: show error message when hook fails
Compare Source
- Fix: make Yarn silent. When Husky was installed with Yarn 1.21.1, hooks output was too verbose (#626).
Compare Source
- Support
Yarn v2 new Plug'n'Play feature (thanks to @arcanis)
- Improve path handling on Windows (in particular with
Cygwin and Cmdr)
- Remove
dependencies and simplify code
- Breaking requires
Node 10+
Thanks to all contributors and everyone who is supporting Husky on Open Collective, GitHub sponsors and Patreon!
Compare Source
- Add
pre-merge-commit hook (#605)
Compare Source
- Reduce dependencies: replace
is-ci with ci-info #579
Compare Source
- Fix: git worktree support #580
- Debug: check
GIT_DIR environment variable when hooks are run
Compare Source
Debug: display husky version and created at
Compare Source
Debug: improve messages
Compare Source
Fix: prevent postinstall from failing on windows #573
Compare Source
Fix: skip install earlier when HUSKY_SKIP_INSTALL=1 (#563)
Compare Source
Fix: prevent old hooks (husky < 1.0) to be run if new ones are defined (husky >= 1.0 ) #556
Compare Source
- Fix: add shebang to run.js (#528)
Compare Source
- Improve error message if git command fails
Compare Source
- Fix HUSKY_SKIP_INSTALL=1 not skipping install
- Breaking change husky requires now Git
>= 2.13.2. If you're already using husky v2 and don't use an old version of Git, you can safely upgrade.
Compare Source
Compare Source
Compare Source
Compare Source
Compare Source
Compare Source
Compare Source
Compare Source
Compare Source
Compare Source
Compare Source
Compare Source
Compare Source
Compare Source
Compare Source
Compare Source
Compare Source
Compare Source
Compare Source
Compare Source
Uh oh!
There was an error while loading. Please reload this page.
This PR contains the following updates:
0.14.3→9.1.7Release Notes
typicode/husky (husky)
v9.1.7Compare Source
What's Changed
New Contributors
Full Changelog: typicode/husky@v9.1.6...v9.1.7
v9.1.6Compare Source
What's Changed
New Contributors
Full Changelog: typicode/husky@v9.1.5...v9.1.6
v9.1.5Compare Source
What's Changed
pre-merge-commithook by @RainMeoCat in #1497New Contributors
Full Changelog: typicode/husky@v9.1.4...v9.1.5
v9.1.4Compare Source
v9.1.3Compare Source
PATHv9.1.2Compare Source
Show a message instead of automatically removing deprecated code.
This only concerns projects that still have the following code in their hooks:
Hooks with these lines will fail in
v10.0.0v9.1.1Compare Source
Super saiyan
(削除) god (削除ここまで)dog! It's over 9.0.0!What's new
You can now run package commands directly, no need for
npxor equivalents.It makes writing hooks more intuitive and is also slightly faster 🐺⚡️
A new recipe has been added to the docs. Lint staged files without external dependencies (inspired by Prettier docs). Feel free to modify it.
For more advanced use cases, see lint-staged.
Fixes
bunx husky initcommandDeprecations
#!/usr/bin/env shand. "$(dirname -- "0ドル")/_/husky.sh"are deprecated.huskycommand will automatically remove them, no action required.~/.huskyrcplease move it to.config/husky/init.shSupport for these will be removed in v10.
Friendly reminder
If Git hooks don't fit your workflow, you can disable Husky globally. Just add
export HUSKY=0to.config/husky/init.sh.I've seen some confusion about this on X, so just a heads-up!
Sponsoring
Husky is downloaded over 45M times per month and used by ~1.5M projects. If your company wants to sponsor, you can do so here: GitHub Sponsors.
Have a nice summer ☀️ I'm open to new opportunities/consulting so feel free to drop me a message 😉
v9.1.0Compare Source
v9.0.11Compare Source
package-lock.jsonby @btea in #1383export HUSKY=0in init (fixes #1393) by @typicode in #1395v9.0.10Compare Source
v9.0.9Compare Source
v9.0.8Compare Source
v9.0.7Compare Source
~/.huskyrccorrectly (compatibility with v8)v9.0.6Compare Source
v9.0.5Compare Source
v9.0.4Compare Source
v9.0.3Compare Source
v9.0.2Compare Source
v9.0.1Compare Source
Kicking off the year with an exciting update!
Note: install using
husky@latestto get the bug fixes that were released after.Introducing
husky initv8
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.
Adding a New Hook
v8
v9
Adding a hook is as simple as creating a file. This can be accomplished using your favorite editor, a script or a basic
echocommand. For example, on Linux/macOS:Further Size Reduction
v8was already the most compact Git hooks manager at approximately6kB.v9takes this a step further, reducing the size to just3kB, 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
--provenancefor safer publishing.$XDG_CONFIG_HOMEsupport. Move~/.huskyrcto~/.config/husky/init.shfor centralized configuration.husky install. Usehuskyorhusky some/dirfor the same functionality (deprecation notice to be added)..gitis missing; it now triggers a warning instead of failure.HUSKY_DEBUG=1withHUSKY=2for debugging.ESMfor module usage.How to Migrate
v9is backward compatible withv8, 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-commitNote:
shwill be used to run hooks, even if a shebang is set.If you were using
huskyas a module:v8.0.3Compare Source
v8.0.2Compare Source
v8.0.1Compare Source
v8.0.0Compare Source
What's Changed
Feats
husky -prefix to logged global error messages by @joshbalfour in #1092PATHwhen command not found to improve debuggability$HUSKY=0Fixes
/usr/bin/env shinstead of direct path ofshby @skhaz in #1051./husky.shby @hyperupcall in #1104basename/dirnameto treat0ドルas an argument by @mataha in #1132git.iolinks by @renbaoshuo in #1136Docs
npx --no-installoption withnpx --noby @sibiraj-s in #1070pnpminstallation by @MohamadKh75 in #1139Chore
v7.0.4Compare Source
No changes. Husky v7.0.3 was reverted, this version is the same as v7.0.2.
v7.0.3Compare Source
v7.0.2Compare Source
Fix pre-commit hook in WebStorm (#1023)
v7.0.1Compare Source
v7.0.0Compare Source
.husky/directory structure..husky/.gitignoreis now unnecessary and can be removed.husky-initCLIhusky-4-to-7CLIPlease help me develop and release OSS projects ❤️ on GitHub Sponsors or Open Collective. Thank you for your support!
v6.0.0Compare Source
After being in early access for Open Source projects and Sponsors for a limited time, I'm happy to announce that husky 6 is MIT again and can be freely used in commercial projects! 🎉
Many thanks to the Open Source projects and Companies which have switched to/sponsored the new husky during this period!
OSS is my full-time job, please consider sponsoring the development of husky on GitHub sponsors or Open Collective. Thank you!
Breaking change
husky inithas been moved to its own package (npx husky-init)Added
require('husky')Migrating from husky 4
Husky 6 contains breaking changes. If you're coming from v4,
npm install husky@6won't be enough.Recommended: see husky-4-to-6 CLI to automatically migrate your config. There's also a dedicated section in the docs.
If you're curious why config has changed, you may be interested in reading:
https://blog.typicode.com/husky-git-hooks-javascript-config/
Also Husky 6 follows official npm and Yarn best practices regarding autoinstall. It's recommended to use
preparescript instead (see usage in docs).v5.2.0Compare Source
setcommand to replace hooks (husky set .husky/pre-commit cmd)addcommand to append command (husky add .husky/pre-commit cmd)v5.1.3Compare Source
husky initwill detect Yarn v2 and initialize accordinglyv5.1.2Compare Source
preparescript instead ofpostinstall(#890)husky initusepreparescript (#890)v5.1.1Compare Source
v5.1.0Compare Source
husky initv5.0.9Compare Source
See https://github.com/typicode/husky/releases/tag/v5.0.0 for v5 release notes
v5.0.8Compare Source
v5.0.7Compare Source
v5.0.6Compare Source
v5.0.5Compare Source
v5.0.4Compare Source
v5.0.3Compare Source
v5.0.2Compare Source
v5.0.1Compare Source
v5.0.0Compare Source
👉 See https://typicode.github.io/husky for breaking changes and new installation instructions.
Note about the license
Husky 5 is released under The Parity Public License.
It doesn't affect you if you're using husky in an Open Source project or if you're a sponsor. You're free to use it as usual and I hope you'll enjoy this new release ❤️
If you're using husky in a commercial project, you may want to consider becoming a sponsor to support the project. You can also try it for 30 days.
This is only for a limited time, husky will be MIT again later.
Migrating
Important Husky v5 brings a lot of improvements but is also very different from v4. Git hooks won't work if you only upgrade husky dependency, existing config needs to be migrated too.
The best way to switch to v5 is to follow the new installation instructions and migrate existing hooks command using
husky add.v4.3.8Compare Source
Cannot read property 'toString' of nullv4.3.7Compare Source
v4.3.6Compare Source
prepare-commit-msgon windows #737v4.3.5Compare Source
v4.3.4Compare Source
INIT_CWDenvironment variablev4.3.3Compare Source
v4.3.2Compare Source
v4.3.1Compare Source
v4.3.0Compare Source
.cjsconfig file support #754v4.2.5Compare Source
v4.2.4Compare Source
cnpmpackage manager #687shto run scripts and avoid inconsistencies #707v4.2.3Compare Source
husky.config.jsnot.huskyrc.config.js#669v4.2.2Compare Source
.husky.jsand.husky.config.jsupdate,pre/post-receivehooksv4.2.1Compare Source
v4.2.0Compare Source
<2.13.0v4.1.0Compare Source
v4.0.10Compare Source
v4.0.9Compare Source
v4.0.8Compare Source
v4.0.7Compare Source
winpty(#634)v4.0.6Compare Source
v4.0.5Compare Source
v4.0.4Compare Source
.eslintrc.js(#627)v4.0.3Compare Source
v4.0.2Compare Source
v4.0.1Compare Source
v4.0.0Compare Source
Yarn v2new Plug'n'Play feature (thanks to @arcanis)CygwinandCmdr)dependenciesand simplify codeNode 10+Thanks to all contributors and everyone who is supporting Husky on Open Collective, GitHub sponsors and Patreon!
v3.1.0Compare Source
pre-merge-commithook (#605)v3.0.9Compare Source
is-ciwithci-info#579v3.0.8Compare Source
GIT_DIRenvironment variable when hooks are runv3.0.7Compare Source
Debug: display husky version and created at
v3.0.6Compare Source
Debug: improve messages
v3.0.5Compare Source
Fix: prevent
postinstallfrom failing on windows #573v3.0.4Compare Source
Fix: skip install earlier when
HUSKY_SKIP_INSTALL=1(#563)v3.0.3Compare Source
Fix: prevent old hooks (husky
< 1.0) to be run if new ones are defined (husky>= 1.0) #556v3.0.2Compare Source
v3.0.1Compare Source
v3.0.0Compare Source
>= 2.13.2. If you're already using huskyv2and don't use an old version of Git, you can safely upgrade.v2.7.0Compare Source
v2.6.0Compare Source
v2.5.0Compare Source
v2.4.1Compare Source
v2.4.0Compare Source
v2.3.0Compare Source
v2.2.0Compare Source
v2.1.0Compare Source
v2.0.0Compare Source
v1.3.1Compare Source
v1.3.0Compare Source
v1.2.1Compare Source
v1.2.0Compare Source
v1.1.4Compare Source
v1.1.3Compare Source
v1.1.2Compare Source
v1.1.1Compare Source
v1.1.0Compare Source
v1.0.1Compare Source
v1.0.0Compare Source
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.