Skip to content

Update hooks (major)#390

Merged
renovate[bot] merged 1 commit intomainfrom
renovate/major-hooks
Mar 16, 2025
Merged

Update hooks (major)#390
renovate[bot] merged 1 commit intomainfrom
renovate/major-hooks

Conversation

@renovate
Copy link
Copy Markdown
Contributor

@renovate renovate bot commented May 8, 2022

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
@​types/prettier 2.7.3 -> 3.0.0 age adoption passing confidence
eslint-config-prettier 8.10.0 -> 10.1.1 age adoption passing confidence
husky 7.0.4 -> 9.1.7 age adoption passing confidence
lint-staged 12.5.0 -> 15.5.0 age adoption passing confidence
prettier (source) 2.8.8 -> 3.5.3 age adoption passing confidence

Release Notes

prettier/eslint-config-prettier (eslint-config-prettier)

v10.1.1

Compare Source

Patch Changes
  • #​309 eb56a5e Thanks @​JounQin! - fix: separate the /flat entry for compatibility

    For flat config users, the previous "eslint-config-prettier" entry still works, but "eslint-config-prettier/flat" adds a new name property for config-inspector, we just can't add it for the default entry for compatibility.

    See also #​308

    // before
    import eslintConfigPrettier from "eslint-config-prettier";
    
    // after
    import eslintConfigPrettier from "eslint-config-prettier/flat";

v10.1.0

Compare Source

Minor Changes

v10.0.3

Compare Source

Patch Changes

v10.0.2

Compare Source

Patch Changes

v10.0.1

Compare Source

eslint-config-prettier

10.0.1

What's Changed

New Contributors

Full Changelog: prettier/eslint-config-prettier@v9.1.0...v10.0.1

v10.0.0

Compare Source

Major Changes

v9.1.0

Compare Source

  • Added: [unicorn/template-indent], (as a [special rule][unicorn/template-indent-special]). Thanks to Gürgün Dayıoğlu (@​gurgunday)!
  • Changed: All the [formatting rules that were deprecated in ESLint 8.53.0][deprecated-8.53.0] are now excluded if you set the ESLINT_CONFIG_PRETTIER_NO_DEPRECATED environment variable.

v9.0.0

Compare Source

  • Added: The CLI helper tool now works with eslint.config.js (flat config). Just like ESLint itself, the CLI tool automatically first tries eslint.config.js and then eslintrc, and you can force which one to use by setting the [ESLINT_USE_FLAT_CONFIG] environment variable. Note that the config of eslint-config-prettier has always been compatible with eslint.config.js (flat config) – it was just the CLI tool that needed updating. On top of that, the docs have been updated to mention how to use both eslint.config.js (flat config) and eslintrc, and the tests now test both config systems.
  • Changed: [unicode-bom] is no longer turned off. Prettier preserves the BOM if you have one, and does not add one if missing. It was wrong of eslint-config-prettier to disable that rule. If you get ESLint errors after upgrading, either add "unicode-bom": "off" to your config to disable it again, or run ESLint with --fix to fix all files according to the rule (add or remove BOM). Thanks to Nicolas Stepien (@​nstepien)!
typicode/husky (husky)

v9.1.7

Compare Source

What's Changed

New Contributors

Full Changelog: typicode/husky@v9.1.6...v9.1.7

v9.1.6

Compare Source

What's Changed

New Contributors

Full Changelog: typicode/husky@v9.1.5...v9.1.6

v9.1.5

Compare Source

What's Changed

New Contributors

Full Changelog: typicode/husky@v9.1.4...v9.1.5

v9.1.4

Compare Source

  • Improve deprecation notice

v9.1.3

Compare Source

  • fix: better handle space in PATH

v9.1.2

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

v9.1.1

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 😉

v9.1.0

Compare Source

v9.0.11

Compare Source

v9.0.10

Compare Source

v9.0.9

Compare Source

v9.0.8

Compare Source

v9.0.7

Compare Source

v9.0.6

Compare Source

v9.0.5

Compare Source

v9.0.4

Compare Source

v9.0.3

Compare Source

v9.0.2

Compare Source

v9.0.1

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.

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

v8.0.3

Compare Source

  • fix: add git not installed message #​1208

v8.0.2

Compare Source

  • docs: remove deprecated npm set-script

v8.0.1

Compare Source

  • fix: use POSIX equality operator

v8.0.0

Compare Source

What's Changed

Feats
Fixes
Docs
Chore
lint-staged/lint-staged (lint-staged)

v15.5.0

Compare Source

Minor Changes
  • #​1526 630af5f Thanks @​iiroj! - Lint-staged no longer resets to the original state when preventing an empty git commit. This happens when your configured tasks reset all the staged changes, typically when trying to commit formatting changes which conflict with your linter setup like ESLint or Prettier.
Example with Prettier

By default Prettier prefers double quotes.

Previously
  1. Stage file.js with only double quotes " changed to '
  2. Run git commit -am "I don't like double quotes"
  3. Lint-staged runs prettier --write file.js, converting all the ' back to "
  4. Because there are now no changes, lint-staged fails, cancels the commit, and resets back to the original state
  5. Commit was not done, original state is restored and single quotes ' are staged
Now
  1. Stage file.js with only double-quotes " changed to '
  2. Run git commit -am "I don't like double quotes"
  3. Lint-staged runs prettier --write file.js, converting all the ' back to "
  4. Because there are now no changes, lint-staged fails and cancels the commit
  5. Commit was not done, and there are no staged changes

v15.4.3

Compare Source

Patch Changes
  • #​1512 cbfed1d Thanks @​tarik02! - Adjust TypeScript types for the default export so that it can be used as a value without error TS2693.

v15.4.2

Compare Source

Patch Changes
  • #​1509 8827ebf Thanks @​iiroj! - Change lint-staged's dependencies to use caret (^) ranges instead of tilde (~). This makes it easier for package managers to perform dependency management when minor-level updates are also permitted instead of just patch-level.

v15.4.1

Compare Source

Patch Changes

v15.4.0

Compare Source

Minor Changes
  • #​1500 a8ec1dd Thanks @​iiroj! - Lint-staged now provides TypeScript types for the configuration and main Node.js API. You can use the JSDoc syntax in your JS configuration files:

    /**
     * @&#8203;filename: lint-staged.config.js
     * @&#8203;type {import('lint-staged').Configuration}
     */
    export default {
      '*': 'prettier --write',
    }

    It's also possible to use the .ts file extension for the configuration if your Node.js version supports it. The --experimental-strip-types flag was introduced in Node.js v22.6.0 and unflagged in v23.6.0, enabling Node.js to execute TypeScript files without additional configuration.

    export NODE_OPTIONS="--experimental-strip-types"
    
    npx lint-staged --config lint-staged.config.ts
Patch Changes

v15.3.0

Compare Source

Minor Changes
  • #​1495 e69da9e Thanks @​iiroj! - Added more info to the debug logs so that "environment" info doesn't need to be added separately to GitHub issues.

  • #​1493 fa0fe98 Thanks @​iiroj! - Added more help messages around the automatic git stash that lint-staged creates as a backup (by default). The console output also displays the short git hash of the stash so that it's easier to recover lost files in case some fatal errors are encountered, or the process is killed before completing.

    For example:

    % npx lint-staged
    ✔ Backed up original state in git stash (20addf8)
    ✔ Running tasks for staged files...
    ✔ Applying modifications from tasks...
    ✔ Cleaning up temporary files...
    

    where the backup can be seen with git show 20addf8, or git stash list:

    % git stash list
    stash@{0}: lint-staged automatic backup (20addf8)
    

v15.2.11

Compare Source

Patch Changes
  • #​1484 bcfe309 Thanks @​wormsik! - Escape paths containing spaces when using the "shell" option.

  • #​1487 7dd8caa Thanks @​iiroj! - Do not treat submodule root paths as "staged files". This caused lint-staged to fail to a Git error when only updating the revision of a submodule.

v15.2.10

Compare Source

Patch Changes

v15.2.9

Compare Source

Patch Changes
  • #​1463 b69ce2d Thanks @​iiroj! - Set the maximum number of event listeners to the number of tasks. This should silence the console warning MaxListenersExceededWarning: Possible EventEmitter memory leak detected.

v15.2.8

Compare Source

Patch Changes
  • f0480f0 Thanks @​iiroj! - In the previous version the native git rev-parse --show-toplevel command was taken into use for resolving the current git repo root. This version switched the --show-toplevel flag with --show-cdup, because on Git installed via MSYS2 the former was returning absolute paths that do not work with Node.js child_process. The new flag returns a path relative to the working directory, avoiding the issue.

    The GitHub Actions workflow has been updated to install Git via MSYS2, to ensure better future compatibility; using the default Git binary in the GitHub Actions runner was working correctly even with MSYS2.

v15.2.7

Compare Source

Patch Changes
  • #​1440 a51be80 Thanks @​iiroj! - In the previous version the native git rev-parse --show-toplevel command was taken into use for resolving the current git repo root. This version drops the --path-format=absolute option to support earlier git versions since it's also the default behavior. If you are still having trouble, please try upgrading git to the latest version.

v15.2.6

Compare Source

Patch Changes
  • #​1433 119adb2 Thanks @​iiroj! - Use native "git rev-parse" commands to determine git repo root directory and the .git config directory, instead of using custom logic. This hopefully makes path resolution more robust on non-POSIX systems.

v15.2.5

Compare Source

Patch Changes
  • #​1424 31a1f95 Thanks @​iiroj! - Allow approximately equivalent versions of direct dependencies by using the "~" character in the version ranges. This means a more recent patch version of a dependency is allowed if available.

  • #​1423 91abea0 Thanks @​iiroj! - Improve error logging when failing to read or parse a configuration file

  • #​1424 ee43f15 Thanks @​iiroj! - Upgrade micromatch@4.0.7

v15.2.4

Compare Source

Patch Changes
  • 4f4537a Thanks @​iiroj! - Fix release issue with previous version; update dependencies

v15.2.2

Compare Source

Patch Changes
  • #​1391 fdcdad4 Thanks @​iiroj! - Lint-staged no longer tries to load configuration from files that are not checked out. This might happen when using sparse-checkout.

v15.2.1

Compare Source

Patch Changes
  • #​1484 bcfe309 Thanks @​wormsik! - Escape paths containing spaces when using the "shell" option.

  • #​1487 7dd8caa Thanks @​iiroj! - Do not treat submodule root paths as "staged files". This caused lint-staged to fail to a Git error when only updating the revision of a submodule.

v15.2.0

Compare Source

Minor Changes
  • #​1371 f3378be Thanks @​iiroj! - Using the --no-stash flag no longer discards all unstaged changes to partially staged files, which resulted in inadvertent data loss. This fix is available with a new flag --no-hide-partially-staged that is automatically enabled when --no-stash is used.
Patch Changes
  • #​1362 17bc480 Thanks @​antonk52! - update lilconfig@3.0.0

  • #​1368 7c55ca9 Thanks @​iiroj! - Update most dependencies

  • #​1368 777d4e9 Thanks @​iiroj! - To improve performance, only use lilconfig when searching for config files outside the git repo. In the regular case, lint-staged finds the config files from the Git index and loads them directly.

  • #​1373 85eb0dd Thanks @​iiroj! - When determining git directory, use fs.realpath() only for symlinks. It looks like fs.realpath() changes some Windows mapped network filepaths unexpectedly, causing issues.

v15.1.0

Compare Source

Minor Changes
Patch Changes

v15.0.2

Compare Source

Patch Changes
  • #​1339 8e82364 Thanks @​iiroj! - Update dependencies, including listr2@​7.0.2 to fix an upstream issue affecting lint-staged.

v15.0.1

Compare Source

Patch Changes
  • #​1217 d2e6f8b Thanks @​louneskmt! - Previously it was possible for a function task to mutate the list of staged files passed to the function, and accidentally affect the generation of other tasks. This is now fixed by passing a copy of the original file list instead.

v15.0.0

Compare Source

Major Changes
  • #​1322 66b93aa Thanks @​iiroj! - Require at least Node.js 18.12.0

    This release drops support for Node.js 16, which is EOL after 2023-09-11.
    Please upgrade your Node.js to the latest version.

    Additionally, all dependencies have been updated to their latest versions.

v14.0.1

Compare Source

Bug Fixes
  • fix reading config from stdin, introduced in v14.0.0 (#​1317) (fc3bfea)

v14.0.0

Compare Source

Features
BREAKING CHANGES
  • Please upgrade your Node.js version to at least 16.14.0.

v13.3.0

Compare Source

Bug Fixes
  • dependencies: update most dependencies (7443870)
  • detect duplicate redundant braces in pattern (d895aa8)
Features
  • dependencies: update listr2@&#8203;6.6.0 (09844ca)

v13.2.3

Compare Source

Bug Fixes
  • the --diff option implies --no-stash (66a716d)

v13.2.2

Compare Source

Bug Fixes

v13.2.1

Compare Source

Bug Fixes
  • ignore "package.json" as config file when it's invalid JSON (#​1281) (e7ed6f7)

v13.2.0

Compare Source

Bug Fixes
  • dependencies: replace colorette with chalk for better color support detection (f598725)
  • use index-based stash references for improved MSYS2 compatibility (#​1270) (60fcd99)
Features

v13.1.4

Compare Source

v13.1.3

Compare Source

v13.1.2

Compare Source

Bug Fixes

v13.1.1

Compare Source

Bug Fixes
  • allow re-enabling --stash when using the --diff option (99390c3)

v13.1.0

Compare Source

Features

v13.0.4

Compare Source

Bug Fixes
  • deps: update all dependencies (336f3b5)
  • deps: update all dependencies (ec995e5)

v13.0.3

Compare Source

Bug Fixes

v13.0.2

Compare Source

Bug Fixes
  • use new --diff and --diff-filter options when checking task modifications (1a5a66a)

v13.0.1

Compare Source

Bug Fixes
  • correct spelling of "0 files" (f27f1d4)
  • suppress error from process.kill when killing tasks on failure (f2c6bdd)
  • deps: update pidtree@^0.6.0 to fix screen size error in WSL (1a77e42)
  • ignore "No matching pid found" error (cb8a432)
  • prevent possible race condition when killing tasks on failure (bc92aff)
Performance Improvements
  • use EventsEmitter instead of setInterval for killing tasks on failure (c508b46)

v13.0.0

Compare Source

Bug Fixes
  • deps: update execa@^6.1.0 (659c85c)
  • deps: update yaml@^2.1.1 (2750a3d)
Features
  • remove support for Node.js 12 (5fb6df9)
BREAKING CHANGES
  • lint-staged will no longer support Node.js 12, which is EOL since 30 April 2022

Configuration

📅 Schedule: Branch creation - "every weekend" (UTC), Automerge - At any time (no schedule defined).

🚦 Automerge: Enabled.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate bot force-pushed the renovate/major-hooks branch 7 times, most recently from 3dc3e25 to e00941b Compare May 14, 2022 09:52
@renovate renovate bot force-pushed the renovate/major-hooks branch 4 times, most recently from b195e56 to a40183a Compare May 21, 2022 05:34
@renovate renovate bot force-pushed the renovate/major-hooks branch 10 times, most recently from 3cc6bfa to 6b9fc04 Compare June 1, 2022 11:48
@renovate renovate bot changed the title Update dependency husky to v8 Update hooks (major) Jun 1, 2022
@renovate renovate bot force-pushed the renovate/major-hooks branch 8 times, most recently from 1fb3995 to 1926750 Compare June 4, 2022 14:30
@renovate renovate bot force-pushed the renovate/major-hooks branch 9 times, most recently from 653841a to 96b9d16 Compare June 19, 2022 01:00
@renovate renovate bot force-pushed the renovate/major-hooks branch 5 times, most recently from e3daa6a to acda90b Compare June 25, 2022 10:10
@renovate renovate bot force-pushed the renovate/major-hooks branch 12 times, most recently from 5d194d0 to 9564c1c Compare July 9, 2022 03:37
@renovate renovate bot force-pushed the renovate/major-hooks branch 3 times, most recently from d7b4dff to c793b79 Compare July 16, 2022 03:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants