Skip to content

lint-staged@17.0.0#1745

Merged
iiroj merged 9 commits into
mainfrom
next-major-v17.0.0
Mar 21, 2026
Merged

lint-staged@17.0.0#1745
iiroj merged 9 commits into
mainfrom
next-major-v17.0.0

Conversation

@iiroj

@iiroj iiroj commented Mar 14, 2026

Copy link
Copy Markdown
Member

No description provided.

@changeset-bot

changeset-bot Bot commented Mar 14, 2026

Copy link
Copy Markdown

πŸ¦‹ Changeset detected

Latest commit: 818ebcc

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
lint-staged Major

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@iiroj iiroj force-pushed the next-major-v17.0.0 branch from 5fa8d74 to fe6088a Compare March 14, 2026 13:44
@iiroj iiroj force-pushed the next-major-v17.0.0 branch 2 times, most recently from 3f88cea to 4894854 Compare March 21, 2026 08:11
@iiroj iiroj force-pushed the next-major-v17.0.0 branch from 4894854 to fc2a139 Compare March 21, 2026 08:18
@iiroj iiroj merged commit 8c43d54 into main Mar 21, 2026
30 checks passed
@iiroj iiroj deleted the next-major-v17.0.0 branch March 21, 2026 14:20
sys-support pushed a commit to 3caravelle/renovate that referenced this pull request May 11, 2026
This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [lint-staged](https://github.com/lint-staged/lint-staged) | [`^16.0.0` β†’ `^17.0.0`](https://renovatebot.com/diffs/npm/lint-staged/16.4.0/17.0.4) | ![age](https://developer.mend.io/api/mc/badges/age/npm/lint-staged/17.0.4?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/lint-staged/16.4.0/17.0.4?slim=true) |

---

### Release Notes

<details>
<summary>lint-staged/lint-staged (lint-staged)</summary>

### [`v17.0.4`](https://github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1704)

[Compare Source](lint-staged/lint-staged@v17.0.3...v17.0.4)

##### Patch Changes

- [#&#8203;1788](lint-staged/lint-staged#1788) [`f95c1f8`](lint-staged/lint-staged@f95c1f8) - Another fix for making sure *lint-staged* adds task modifications correctly to the commit in the following cases:

  - after editing `<file>` it is staged with `git add <file>`, and then committed with `git commit`
  - after editing `<file>` it is committed with `git commit --all` without explicit `git add`
  - after editing `<file>` it is committed with `git commit <pathspec>` without explicit `git add`

  There's new test cases which actually setup the Git `pre_commit` hook to run *lint-staged* and verify them. These issues started in **v17.0.0** when trying to improve support for committig without having explicitly staged files.

### [`v17.0.3`](https://github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1703)

[Compare Source](lint-staged/lint-staged@v17.0.2...v17.0.3)

##### Patch Changes

- [#&#8203;1782](lint-staged/lint-staged#1782) [`06813f9`](lint-staged/lint-staged@06813f9) Thanks [@&#8203;iiroj](https://github.com/iiroj)! - Fix *lint-staged* behavior when implicitly committing files without using `git add` by either:
  - `git commit -am "my commit message"` where `-a` (`--all`) means to automatically stage all tracked modified and deleted files
  - `git commit -m "my commit message" .` where `.` is an example of a [*pathspec*](https://git-scm.com/docs/git-commit#Documentation/git-commit.txt-pathspec) where matching files will be staged

### [`v17.0.2`](https://github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1702)

[Compare Source](lint-staged/lint-staged@v17.0.1...v17.0.2)

##### Patch Changes

- [#&#8203;1779](lint-staged/lint-staged#1779) [`88670ca`](lint-staged/lint-staged@88670ca) Thanks [@&#8203;iiroj](https://github.com/iiroj)! - Enable immutable GitHub releases

### [`v17.0.1`](https://github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1701)

[Compare Source](lint-staged/lint-staged@v17.0.0...v17.0.1)

##### Patch Changes

- [#&#8203;1776](lint-staged/lint-staged#1776) [`4a5664b`](lint-staged/lint-staged@4a5664b) Thanks [@&#8203;iiroj](https://github.com/iiroj)! - Adjust GitHub Actions workflow so that automatic publishing works with signed commits.

### [`v17.0.0`](https://github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1700)

[Compare Source](lint-staged/lint-staged@v16.4.0...v17.0.0)

##### Major Changes

- [#&#8203;1745](lint-staged/lint-staged#1745) [`e244adf`](lint-staged/lint-staged@e244adf) Thanks [@&#8203;iiroj](https://github.com/iiroj)! - **Node.js v20 is no longer supported, and the oldest supported version is now `22.22.1`**, which is an active LTS version at the time of this release. Node.js 20 will be EOL after April 2026. Please upgrade your Node.js version!

- [#&#8203;1676](lint-staged/lint-staged#1676) [`0584e0b`](lint-staged/lint-staged@0584e0b) Thanks [@&#8203;outslept](https://github.com/outslept)! - *Lint-staged* now tries to verify the installed Git version is at least `2.32.0`, released in 2021. If you're using an even older Git version, you need to [upgrade](https://git-scm.com/install/mac) it before running *lint-staged*!

- [#&#8203;1745](lint-staged/lint-staged#1745) [`2dcc40a`](lint-staged/lint-staged@2dcc40a) Thanks [@&#8203;iiroj](https://github.com/iiroj)! - The dependency `yaml` is now marked as optional and probably won't be installed by default. If you're using a YAML configuration file you should install the package separately:

  ```shell
  npm install --development yaml
  ```

  If you're using `.lintstagedrc` as the config file name (without a file extension), it will be treated as a YAML file. If the content is JSON, consider renaming it to `.lintstagedrc.json` to avoid needing to install `yaml`.

##### Minor Changes

- [#&#8203;1748](lint-staged/lint-staged#1748) [`809d5ef`](lint-staged/lint-staged@809d5ef) Thanks [@&#8203;iiroj](https://github.com/iiroj)! - Add new option `--hide-all` for hiding all unstaged changes and untracked files, before running tasks. This makes it easier to run tools like [Knip](https://knip.dev) which check for unused code. Untracked files are included in the backup stash and restored automatically after running.

- [#&#8203;1759](lint-staged/lint-staged#1759) [`f13045a`](lint-staged/lint-staged@f13045a) Thanks [@&#8203;iiroj](https://github.com/iiroj)! - Update dependencies, including [`tinyexec@1.1.1`](https://github.com/tinylibs/tinyexec/releases/tag/1.1.1) to fix the following issues:
  - When using a Node.js version manager with multiple versions installed ([nvm](https://github.com/nvm-sh/nvm), [n](https://github.com/tj/n), for example), scripts with the `#!/usr/bin/env node` shebang ([Prettier](https://github.com/prettier/prettier), [ESLint](https://github.com/eslint/eslint), for example) were previously spawned using the default Node.js version configured by the version manager (the one `which node` points to) on POSIX systems. Now, they will be spawned with the same version that *lint-staged* itself was started with.
    - For example, if your default Node.js version is 24.14.1 but *lint-staged* is run with the latest version 25.9.0, the tasks spawned by *lint-staged* will now also use version 25.9.0. Previously they were spawned using 24.14.1.
  - When installing Node.js from the Ubuntu App Center ([Snap store](https://snapcraft.io/store)), the `node` executable available in `PATH` is a symlink pointing to Snap itself. The sandboxing features of Snap prevented *lint-staged* from spawning scripts with the `#!/usr/bin/env node` shebang, because it meant *lint-staged* tried to spawn Snap via the symlink. This resulted in an `ENOENT` error when trying to run `prettier`, for example. Now, since the real `node` executable's directory is available in the `PATH`, *lint-staged* will instead spawn the script with the real `node` binary succesfully.

- [#&#8203;1761](lint-staged/lint-staged#1761) [`d3251b1`](lint-staged/lint-staged@d3251b1) Thanks [@&#8203;iiroj](https://github.com/iiroj)! - *Lint-staged* now runs `git update-index --again` after running tasks, instead of `git add <originally staged files>`. This should improve compatibility when using non-default indexes, for example when committing with a pathspec `git commit -m "message" .` instead of adding files to the index.

- [#&#8203;1745](lint-staged/lint-staged#1745) [`a9585ac`](lint-staged/lint-staged@a9585ac) Thanks [@&#8203;iiroj](https://github.com/iiroj)! - Remove `commander` as a dependency and use the built-in `parseArgs` from `node:util` to parse CLI flags.

##### Patch Changes

- [#&#8203;1755](lint-staged/lint-staged#1755) [`c82d30b`](lint-staged/lint-staged@c82d30b) Thanks [@&#8203;iiroj](https://github.com/iiroj)! - All tests now pass on the [Bun](https://bun.com) runtime (latest).

- [#&#8203;1750](lint-staged/lint-staged#1750) [`a401818`](lint-staged/lint-staged@a401818) Thanks [@&#8203;iiroj](https://github.com/iiroj)! - Remove manual handling for `git stash --keep-index` resurrecting deleted files, because the issue was fixed in Git `2.23.0` and *lint-staged* requires at least Git `2.32.0`.

- [#&#8203;1771](lint-staged/lint-staged#1771) [`c4b8936`](lint-staged/lint-staged@c4b8936) Thanks [@&#8203;iiroj](https://github.com/iiroj)! - Fix documentation about multiple config files and the `--cwd` option. When using it, all tasks will be run in the specified directory. For example, to run everything in the actual `process.cwd()`, use `lint-staged --cwd="."`.

</details>

---

### 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.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi44MS4zIiwidXBkYXRlZEluVmVyIjoiNDIuODEuMyIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Reviewed-on: https://git.3caravelle.net/3Caravelle/renovate/pulls/29
Co-authored-by: Renovate Bot <renovate-bot@3caravelle.com>
Co-committed-by: Renovate Bot <renovate-bot@3caravelle.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Development

Successfully merging this pull request may close these issues.

1 participant