SIGN IN SIGN UP
TryGhost / Ghost UNCLAIMED

Independent technology for modern publishing, memberships, subscriptions and newsletters.

0 0 119 JavaScript

Update dependency lint-staged to v17 (#28281)

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://redirect.github.com/lint-staged/lint-staged) |
[`16.4.0` →
`17.0.5`](https://renovatebot.com/diffs/npm/lint-staged/16.4.0/17.0.5) |
![age](https://developer.mend.io/api/mc/badges/age/npm/lint-staged/17.0.5?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/lint-staged/16.4.0/17.0.5?slim=true)
|

---

### Release Notes

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

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

[Compare
Source](https://redirect.github.com/lint-staged/lint-staged/compare/v17.0.4...v17.0.5)

##### Patch Changes

-
[#&#8203;1792](https://redirect.github.com/lint-staged/lint-staged/pull/1792)
[`1f67271`](https://redirect.github.com/lint-staged/lint-staged/commit/1f672718b6fa67e0f00aafe107cb9f084f4d9102)
- Correctly set the `--max-arg-length` default value based on the
running platform. This controls how very long lists of staged files are
split into multiple chunks.

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

[Compare
Source](https://redirect.github.com/lint-staged/lint-staged/compare/v17.0.3...v17.0.4)

##### Patch Changes

-
[#&#8203;1788](https://redirect.github.com/lint-staged/lint-staged/pull/1788)
[`f95c1f8`](https://redirect.github.com/lint-staged/lint-staged/commit/f95c1f8df3368758c44c2052e568aac1b3d4c767)
- 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://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1703)

[Compare
Source](https://redirect.github.com/lint-staged/lint-staged/compare/v17.0.2...v17.0.3)

##### Patch Changes

-
[#&#8203;1782](https://redirect.github.com/lint-staged/lint-staged/pull/1782)
[`06813f9`](https://redirect.github.com/lint-staged/lint-staged/commit/06813f9ab661db987e7720086ef9ec3f552ee097)
Thanks [@&#8203;iiroj](https://redirect.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://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1702)

[Compare
Source](https://redirect.github.com/lint-staged/lint-staged/compare/v17.0.1...v17.0.2)

##### Patch Changes

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

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

[Compare
Source](https://redirect.github.com/lint-staged/lint-staged/compare/v17.0.0...v17.0.1)

##### Patch Changes

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

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

[Compare
Source](https://redirect.github.com/lint-staged/lint-staged/compare/v16.4.0...v17.0.0)

##### Major Changes

-
[#&#8203;1745](https://redirect.github.com/lint-staged/lint-staged/pull/1745)
[`e244adf`](https://redirect.github.com/lint-staged/lint-staged/commit/e244adfab430be95803e74b20acf518517054c9f)
Thanks [@&#8203;iiroj](https://redirect.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](https://redirect.github.com/lint-staged/lint-staged/pull/1676)
[`0584e0b`](https://redirect.github.com/lint-staged/lint-staged/commit/0584e0b8824a07ea4d0151f2c17fc37c4905a421)
Thanks [@&#8203;outslept](https://redirect.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](https://redirect.github.com/lint-staged/lint-staged/pull/1745)
[`2dcc40a`](https://redirect.github.com/lint-staged/lint-staged/commit/2dcc40a1a98aea20d38f76031ac30b278f81682a)
Thanks [@&#8203;iiroj](https://redirect.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](https://redirect.github.com/lint-staged/lint-staged/pull/1748)
[`809d5ef`](https://redirect.github.com/lint-staged/lint-staged/commit/809d5ef0a66edb2b26b233d33ce8e14af6c978e7)
Thanks [@&#8203;iiroj](https://redirect.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](https://redirect.github.com/lint-staged/lint-staged/pull/1759)
[`f13045a`](https://redirect.github.com/lint-staged/lint-staged/commit/f13045a5eae28c3233fc37146b0e1f51739c254b)
Thanks [@&#8203;iiroj](https://redirect.github.com/iiroj)! - Update
dependencies, including
[`tinyexec@1.1.1`](https://redirect.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://redirect.github.com/nvm-sh/nvm),
[n](https://redirect.github.com/tj/n), for example), scripts with the
`#!/usr/bin/env node` shebang
([Prettier](https://redirect.github.com/prettier/prettier),
[ESLint](https://redirect.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](https://redirect.github.com/lint-staged/lint-staged/pull/1761)
[`d3251b1`](https://redirect.github.com/lint-staged/lint-staged/commit/d3251b192d7116f059e7cabeffa3bfd7788dedeb)
Thanks [@&#8203;iiroj](https://redirect.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](https://redirect.github.com/lint-staged/lint-staged/pull/1745)
[`a9585ac`](https://redirect.github.com/lint-staged/lint-staged/commit/a9585ac7ce0162c5c6c9aa88a28c11c812abedaf)
Thanks [@&#8203;iiroj](https://redirect.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](https://redirect.github.com/lint-staged/lint-staged/pull/1755)
[`c82d30b`](https://redirect.github.com/lint-staged/lint-staged/commit/c82d30bda8c80f886bdfead2e7aa123f7337aa76)
Thanks [@&#8203;iiroj](https://redirect.github.com/iiroj)! - All tests
now pass on the [Bun](https://bun.com) runtime (latest).

-
[#&#8203;1750](https://redirect.github.com/lint-staged/lint-staged/pull/1750)
[`a401818`](https://redirect.github.com/lint-staged/lint-staged/commit/a4018185016617b02e4473d14e036a5f1a9b3f85)
Thanks [@&#8203;iiroj](https://redirect.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](https://redirect.github.com/lint-staged/lint-staged/pull/1771)
[`c4b8936`](https://redirect.github.com/lint-staged/lint-staged/commit/c4b893665bf39670650ae71b4ec2073025e9984e)
Thanks [@&#8203;iiroj](https://redirect.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**: (in timezone Etc/UTC)

- Branch creation
  - Only on Sunday and Saturday (`* * * * 0,6`)
- Between 11:00 PM and 11:59 PM, Monday through Friday (`* 23 * * 1-5`)
- Between 12:00 AM and 04:59 AM, Monday through Saturday (`* 0-4 * *
1-6`)
- Automerge
  - Only on Sunday and Saturday (`* * * * 0,6`)
- Between 11:00 PM and 11:59 PM, Monday through Friday (`* 23 * * 1-5`)
- Between 12:00 AM and 04:59 AM, Monday through Saturday (`* 0-4 * *
1-6`)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, 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 [Mend
Renovate](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yMDUuMiIsInVwZGF0ZWRJblZlciI6IjQzLjIwNS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: tryghost-renovate[bot] <269725441+tryghost-renovate[bot]@users.noreply.github.com>
T
tryghost-renovate[bot] committed
15adcca3d85ef710db56792eed634b22f94aeda5
Parent: c934ce4
Committed by GitHub <noreply@github.com> on 5/31/2026, 11:37:09 PM