i️ Note
This PR body was truncated due to platform limits.
This PR contains the following updates:
Release Notes
lint-staged/lint-staged (lint-staged)
Compare Source
Patch Changes
- #1711
ef74c8d Thanks @iiroj! - Do not display a "failed to spawn" error message when a task fails normally. This message is reserved for when the task didn't run because spawning it failed.
Compare Source
Patch Changes
- #1693
33d4502 Thanks @Adrian-Baran-GY! - Fix problems with --continue-on-error option, where tasks might have still been killed (SIGINT) when one of them failed.
Compare Source
Patch Changes
- #1687
9e02d9d Thanks @iiroj! - Fix unhandled promise rejection when spawning tasks (instead of the tasks themselves failing). Previously when a task failed to spawn, lint-staged also failed and the backup stash might not have been automatically restored.
Compare Source
Patch Changes
Compare Source
Patch Changes
- #1669
27cd541 Thanks @iiroj! - When using --fail-on-changes, automatically hidden (partially) unstaged changes are no longer counted to make lint-staged fail.
Compare Source
Patch Changes
-
#1667 699f95d Thanks @iiroj! - The backup stash will not be dropped when using --fail-on-changes and there are errors. When reverting to original state is disabled (via --no-revert or --fail-on-changes), hidden (partially) unstaged changes are still restored automatically so that it's easier to resolve the situation manually.
Additionally, the example for using the backup stash manually now uses the correct backup hash, if available:
% npx lint-staged --fail-on-changes
✔ Backed up original state in git stash (c18d55a3)
✔ Running tasks for staged files...
✖ Tasks modified files and --fail-on-changes was used!
↓ Cleaning up temporary files...
✖ lint-staged failed because `--fail-on-changes` was used.
Any lost modifications can be restored from a git stash:
> git stash list --format="%h %s"
c18d55a3 On main: lint-staged automatic backup
> git apply --index c18d55a3
Compare Source
Patch Changes
-
#1664 8277b3b Thanks @iiroj! - The built-in TypeScript types have been updated to more closely match the implementation. Notably, the list of staged files supplied to task functions is readonly string[] and can't be mutated. Thanks @outslept!
export default {
--- "*": (files: string[]) => void console.log('staged files', files)
+++ "*": (files: readonly string[]) => void console.log('staged files', files)
}
-
#1654 70b9af3 Thanks @iiroj! - This version has been published from GitHub Actions using Trusted Publishing for npm packages.
-
#1659 4996817 Thanks @iiroj! - Fix searching configuration files when the working directory is a subdirectory of a git repository, and there are package.json files in the working directory. This situation might happen when running lint-staged for a single package in a monorepo.
-
#1654 7021f0a Thanks @iiroj! - Return the caret semver range (^) to direct dependencies so that future patch and minor versions are allowed. This enables projects to better maintain and deduplicate their own transitive dependencies while not requiring direct updates to lint-staged. This was changed in 16.2.0 after the vulnerability issues with chalk and debug, which were also removed in the same version.
Given the recent vulnerabilities in the npm ecosystem, it's best to be very careful when updating dependencies.
Compare Source
Minor Changes
-
#1615 99eb742 Thanks @iiroj! - Added a new option --fail-on-changes to make lint-staged exit with code 1 when tasks modify any files, making the precommit hook fail. This is similar to the git diff --exit-code option. Using this flag also implies the --no-revert flag which means any changes made by tasks will be left in the working tree after failing, so that they can be manually staged and the commit tried again.
-
#1611 cd05fd3 Thanks @rlorenzo! - Added a new option --continue-on-error so that lint-staged will run all tasks to completion even if some of them fail. By default, lint-staded will exit early on the first failure.
-
#1637 82fcc07 Thanks @iiroj! - Internal lint-staged errors are now thrown and visible in the console output. Previously they were caught with the process exit code set to 1, but not logged. This happens when, for example, there's a syntax error in the lint-staged configuration file.
-
#1647 a5ecc06 Thanks @iiroj! - Remove debug as a dependency due to recent malware issue; read more at debug-js/debug#1005. Because of this, the DEBUG environment variable is no longer supported — use the --debug to enable debugging
-
#1636 8db2717 Thanks @iiroj! - Added a new option --hide-unstaged so that lint-staged will hide all unstaged changes to tracked files before running tasks. The changes will be applied back after running the tasks. Note that the combination of flags --hide-unstaged --no-hide-partially-staged isn't meaningful and behaves the same as just --hide-unstaged.
Thanks to @ItsNickBarry for the idea and initial implementation in #1552.
-
#1648 7900b3b Thanks @iiroj! - Remove lilconfig to reduce reliance on third-party dependencies. It was used to find possible config files outside of those tracked in Git, including from the parent directories. This behavior has been moved directly into lint-staged and should work about the same.
Patch Changes
-
#1633 7f9e485 Thanks @dependabot! - Bumps listr2 from 9.0.3 to 9.0.4.
-
#1626 99d5a9b Thanks @iiroj! - Due to recent phishing attacks, for example chalk@5.6.1 was released with malware. To avoid lint-staged's users being at risk the direct dependencies are pinned to exact versions, instead of allowing future patch versions with the caret (^) range.
-
#1588 035bbf2 Thanks @outslept! - Increase performance by listing staged files and searching for configuration concurrently.
-
#1645 deba3ad Thanks @iiroj! - Remove chalk as a dependency due to recent malware issue; read more at chalk/chalk#656.
If you are having trouble with ANSI color codes when using lint-staged, you can try setting either FORCE_COLOR=true or NO_COLOR=true env variables.
Compare Source
Patch Changes
- #1610
e93578e Thanks @iiroj! - Try to improve terminating of subprocess of tasks by using SIGKILL, and only calling pidtree when the the main task process has a known pid.
Compare Source
Patch Changes
- #1608
4e3ce22 Thanks @srsatt! - Detect the git repo's top-level directory correctly when in a worktree.
Compare Source
Patch Changes
- #1604
90b37b0 Thanks @iiroj! - Add another types field to package.json to make even more sure NPM detects that lint-staged includes built-in TypeScript type definitions.
Compare Source
Patch Changes
- #1602
7ea700b Thanks @dword-design! - Add the types field to package.json to make sure NPM detects lint-staged includes built-in TypeScript type definitions.
Compare Source
Patch Changes
-
#1570 a7c0c88 Thanks @ItsNickBarry! - When using --diff-filter with the D option to include deleted staged files, lint-staged no longer tries to stage the deleted files, unless they're no longer deleted. Previously this caused an error from git add like fatal: pathspec 'deleted-file' did not match any files.
-
38f942e Thanks @iiroj! - Removed an extraneous log entry that printed shouldHidePArtiallyStagedFiles to console output.
Compare Source
Patch Changes
-
#1565 3686977 Thanks @iiroj! - Lint-staged now explicitly warns about potential data loss when using --no-stash.
-
#1571 02299a9 Thanks @iiroj! - Function tasks (introduced in v16.0.0) only receive the staged files matching the configured glob, instead of all staged files.
-
#1563 bc61c74 Thanks @iiroj! - This version fixes incorrect behavior where unstaged changes were committed when using the --no-stash option. This happened because --no-stash implied --no-hide-partially-staged, meaning unstaged changes to files which also had other staged changes were added to the commit by lint-staged; this is no longer the case.
The previous (incorrect) behavior can still be achieved by using both options --no-stash --no-hide-partially-staged at the same time.
Compare Source
Minor Changes
-
#1536 e729daa Thanks @iiroj! - A new flag --no-revert has been introduced for when task modifications should be applied to the index before aborting the commit in case of errors. By default, lint-staged will clear all task modifications and revert to the original state.
-
#1550 b27fa3f Thanks @iiroj! - Lint-staged now ignores symlinks and leaves them out from the list of staged files.
Patch Changes
Compare Source
Major Changes
-
#1546 158d15c Thanks @iiroj! - Processes are spawned using nano-spawn instead of execa. If you are using Node.js scripts as tasks, you might need to explicitly run them with node, especially when using Windows:
{
"*.js": "node my-js-linter.js"
}
-
#1546 158d15c Thanks @iiroj! - The --shell flag has been removed and lint-staged no longer supports evaluating commands directly via a shell. To migrate existing commands, you can create a shell script and invoke it instead. Lint-staged will pass matched staged files as a list of arguments, accessible via "$@​":
Compare Source
Patch Changes
Compare Source
Patch Changes
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
- Stage
file.js with only double quotes " changed to '
- Run
git commit -am "I don't like double quotes"
- Lint-staged runs
prettier --write file.js, converting all the ' back to "
- Because there are now no changes, lint-staged fails, cancels the commit, and resets back to the original state
- Commit was not done, original state is restored and single quotes
' are staged
Now
- Stage
file.js with only double-quotes " changed to '
- Run
git commit -am "I don't like double quotes"
- Lint-staged runs
prettier --write file.js, converting all the ' back to "
- Because there are now no changes, lint-staged fails and cancels the commit
- Commit was not done, and there are no staged changes
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.
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.
Compare Source
Patch Changes
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:
/**
* @​filename: lint-staged.config.js
* @​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
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)
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.
Compare Source
Patch Changes
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.
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.
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.
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.
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
Compare Source
Patch Changes
4f4537a Thanks @iiroj! - Fix release issue with previous version; update dependencies
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.
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.
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.
Compare Source
Minor Changes
- #1344
0423311 Thanks @danielbayley! - Add support for loading configuration from package.yaml and package.yml files, supported by pnpm.
Patch Changes
Compare Source
Patch Changes
- #1339
8e82364 Thanks @iiroj! - Update dependencies, including listr2@7.0.2 to fix an upstream issue affecting lint-staged.
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.
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.
Compare Source
Bug Fixes
- fix reading config from stdin, introduced in v14.0.0 (#1317) (fc3bfea)
Compare Source
Features
BREAKING CHANGES
- Please upgrade your Node.js version to at least
16.14.0.
Compare Source
Bug Fixes
- dependencies: update most dependencies (7443870)
- detect duplicate redundant braces in pattern (d895aa8)
Features
- dependencies: update
listr2@​6.6.0 (09844ca)
Compare Source
Bug Fixes
- the
--diff option implies --no-stash (66a716d)
Compare Source
Bug Fixes
Compare Source
Bug Fixes
- ignore "package.json" as config file when it's invalid JSON (#1281) (e7ed6f7)
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
Compare Source
Compare Source
Compare Source
Bug Fixes
- disable stash by default when using diff option (#1259) (142c6f2)
Compare Source
Bug Fixes
- allow re-enabling
--stash when using the --diff option (99390c3)
Compare Source
Features
Compare Source
Bug Fixes
- deps: update all dependencies (336f3b5)
- deps: update all dependencies (ec995e5)
Compare Source
Bug Fixes
Compare Source
Bug Fixes
- use new
--diff and --diff-filter options when checking task modifications (1a5a66a)
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)
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
Compare Source
Bug Fixes
- include all files when using
--config <path> (641d1c2)
- skip backup stash when using the
--diff option (d4da24d)
Features
- add
--diff-filter option for overriding list of (staged) files (753ef72)
- add
--diff option for overriding list of (staged) files (35fcce9)
Compare Source
Bug Fixes
- deps: downgrade yaml@1.10.2 to support Node.js 12 (383a96e)
- deps: update commander@^9.2.0 (22ebf52)
- deps: update yaml@^2.0.1 (ec73af0)
Compare Source
Bug Fixes
- correctly handle --max-arg-length cli option (1db5f26)
Compare Source
Bug Fixes
- correctly handle symlinked config files (b3f63ec)
Compare Source
Bug Fixes
- handle empty input by returning empty array from
parseGitZOutput (a118817)
- limit configuration discovery to cwd (d8fdf1d)
- restore functionality of parent globs for a single configuration file (877ab4c)
Features
- expose
--max-arg-length cli option (e8291b0)
Compare Source
Bug Fixes
- avoid passing unexpected arguments from forEach to process.kill() (1b1f0e4)
- clear execution interruption interval on first catch (46952cb)
Compare Source
Bug Fixes
- improve renderer logic for
--silent and FORCE_COLOR settings (d327873)
Compare Source
Bug Fixes
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.
Uh oh!
There was an error while loading. Please reload this page.
This PR contains the following updates:
7.3.0→16.2.7Release Notes
lint-staged/lint-staged (lint-staged)
v16.2.7Compare Source
Patch Changes
ef74c8dThanks @iiroj! - Do not display a "failed to spawn" error message when a task fails normally. This message is reserved for when the task didn't run because spawning it failed.v16.2.6Compare Source
Patch Changes
33d4502Thanks @Adrian-Baran-GY! - Fix problems with--continue-on-erroroption, where tasks might have still been killed (SIGINT) when one of them failed.v16.2.5Compare Source
Patch Changes
9e02d9dThanks @iiroj! - Fix unhandled promise rejection when spawning tasks (instead of the tasks themselves failing). Previously when a task failed to spawn, lint-staged also failed and the backup stash might not have been automatically restored.v16.2.4Compare Source
Patch Changes
#1682
0176038Thanks @iiroj! - Update dependencies, includingnano-spawn@2.0.0with bug fixes.#1671
581a54eThanks @iiroj! - Speed up execution by only importing theyamldepedency if using YAML configuration files.v16.2.3Compare Source
Patch Changes
27cd541Thanks @iiroj! - When using--fail-on-changes, automatically hidden (partially) unstaged changes are no longer counted to make lint-staged fail.v16.2.2Compare Source
Patch Changes
#1667
699f95dThanks @iiroj! - The backup stash will not be dropped when using--fail-on-changesand there are errors. When reverting to original state is disabled (via--no-revertor--fail-on-changes), hidden (partially) unstaged changes are still restored automatically so that it's easier to resolve the situation manually.Additionally, the example for using the backup stash manually now uses the correct backup hash, if available:
v16.2.1Compare Source
Patch Changes
#1664
8277b3bThanks @iiroj! - The built-in TypeScript types have been updated to more closely match the implementation. Notably, the list of staged files supplied to task functions isreadonly string[]and can't be mutated. Thanks @outslept!export default { --- "*": (files: string[]) => void console.log('staged files', files) +++ "*": (files: readonly string[]) => void console.log('staged files', files) }#1654
70b9af3Thanks @iiroj! - This version has been published from GitHub Actions using Trusted Publishing for npm packages.#1659
4996817Thanks @iiroj! - Fix searching configuration files when the working directory is a subdirectory of a git repository, and there arepackage.jsonfiles in the working directory. This situation might happen when running lint-staged for a single package in a monorepo.#1654
7021f0aThanks @iiroj! - Return the caret semver range (^) to direct dependencies so that future patch and minor versions are allowed. This enables projects to better maintain and deduplicate their own transitive dependencies while not requiring direct updates to lint-staged. This was changed in 16.2.0 after the vulnerability issues withchalkanddebug, which were also removed in the same version.Given the recent vulnerabilities in the npm ecosystem, it's best to be very careful when updating dependencies.
v16.2.0Compare Source
Minor Changes
#1615
99eb742Thanks @iiroj! - Added a new option--fail-on-changesto make lint-staged exit with code 1 when tasks modify any files, making theprecommithook fail. This is similar to thegit diff --exit-codeoption. Using this flag also implies the--no-revertflag which means any changes made by tasks will be left in the working tree after failing, so that they can be manually staged and the commit tried again.#1611
cd05fd3Thanks @rlorenzo! - Added a new option--continue-on-errorso that lint-staged will run all tasks to completion even if some of them fail. By default, lint-staded will exit early on the first failure.#1637
82fcc07Thanks @iiroj! - Internal lint-staged errors are now thrown and visible in the console output. Previously they were caught with the process exit code set to 1, but not logged. This happens when, for example, there's a syntax error in the lint-staged configuration file.#1647
a5ecc06Thanks @iiroj! - Remove debug as a dependency due to recent malware issue; read more at debug-js/debug#1005. Because of this, theDEBUGenvironment variable is no longer supported — use the--debugto enable debugging#1636
8db2717Thanks @iiroj! - Added a new option--hide-unstagedso that lint-staged will hide all unstaged changes to tracked files before running tasks. The changes will be applied back after running the tasks. Note that the combination of flags--hide-unstaged --no-hide-partially-stagedisn't meaningful and behaves the same as just--hide-unstaged.Thanks to @ItsNickBarry for the idea and initial implementation in #1552.
#1648
7900b3bThanks @iiroj! - Remove lilconfig to reduce reliance on third-party dependencies. It was used to find possible config files outside of those tracked in Git, including from the parent directories. This behavior has been moved directly into lint-staged and should work about the same.Patch Changes
#1633
7f9e485Thanks @dependabot! - Bumps listr2 from 9.0.3 to 9.0.4.#1626
99d5a9bThanks @iiroj! - Due to recent phishing attacks, for example chalk@5.6.1 was released with malware. To avoid lint-staged's users being at risk the direct dependencies are pinned to exact versions, instead of allowing future patch versions with the caret (^) range.#1588
035bbf2Thanks @outslept! - Increase performance by listing staged files and searching for configuration concurrently.#1645
deba3adThanks @iiroj! - Remove chalk as a dependency due to recent malware issue; read more at chalk/chalk#656.If you are having trouble with ANSI color codes when using lint-staged, you can try setting either
FORCE_COLOR=trueorNO_COLOR=trueenv variables.v16.1.6Compare Source
Patch Changes
e93578eThanks @iiroj! - Try to improve terminating of subprocess of tasks by usingSIGKILL, and only callingpidtreewhen the the main task process has a known pid.v16.1.5Compare Source
Patch Changes
4e3ce22Thanks @srsatt! - Detect the git repo's top-level directory correctly when in a worktree.v16.1.4Compare Source
Patch Changes
90b37b0Thanks @iiroj! - Add anothertypesfield topackage.jsonto make even more sure NPM detects that lint-staged includes built-in TypeScript type definitions.v16.1.3Compare Source
Patch Changes
7ea700bThanks @dword-design! - Add thetypesfield topackage.jsonto make sure NPM detects lint-staged includes built-in TypeScript type definitions.v16.1.2Compare Source
Patch Changes
#1570
a7c0c88Thanks @ItsNickBarry! - When using--diff-filterwith theDoption to include deleted staged files, lint-staged no longer tries to stage the deleted files, unless they're no longer deleted. Previously this caused an error fromgit addlikefatal: pathspec 'deleted-file' did not match any files.38f942eThanks @iiroj! - Removed an extraneous log entry that printedshouldHidePArtiallyStagedFilesto console output.v16.1.1Compare Source
Patch Changes
#1565
3686977Thanks @iiroj! - Lint-staged now explicitly warns about potential data loss when using--no-stash.#1571
02299a9Thanks @iiroj! - Function tasks (introduced in v16.0.0) only receive the staged files matching the configured glob, instead of all staged files.#1563
bc61c74Thanks @iiroj! - This version fixes incorrect behavior where unstaged changes were committed when using the--no-stashoption. This happened because--no-stashimplied--no-hide-partially-staged, meaning unstaged changes to files which also had other staged changes were added to the commit by lint-staged; this is no longer the case.The previous (incorrect) behavior can still be achieved by using both options
--no-stash --no-hide-partially-stagedat the same time.v16.1.0Compare Source
Minor Changes
#1536
e729daaThanks @iiroj! - A new flag--no-reverthas been introduced for when task modifications should be applied to the index before aborting the commit in case of errors. By default, lint-staged will clear all task modifications and revert to the original state.#1550
b27fa3fThanks @iiroj! - Lint-staged now ignores symlinks and leaves them out from the list of staged files.Patch Changes
c37dc38Thanks @iiroj! - The minimum required Node.js version is lowered to20.17following nano-spawn@1.0.2.v16.0.0Compare Source
Major Changes
#1546
158d15cThanks @iiroj! - Processes are spawned using nano-spawn instead of execa. If you are using Node.js scripts as tasks, you might need to explicitly run them withnode, especially when using Windows:{ "*.js": "node my-js-linter.js" }#1546
158d15cThanks @iiroj! - The--shellflag has been removed and lint-staged no longer supports evaluating commands directly via a shell. To migrate existing commands, you can create a shell script and invoke it instead. Lint-staged will pass matched staged files as a list of arguments, accessible via"$@​":v15.5.2Compare Source
Patch Changes
5561321Thanks @YimingIsCOLD! - Correctly handle colon (:) characters in staged filenames.v15.5.1Compare Source
Patch Changes
#1533
5d53534Thanks @iiroj! - Improve listing of staged files so that lint-staged doesn't crash when encountering an uninitialized submodule. This should result in less errors like:v15.5.0Compare Source
Minor Changes
630af5fThanks @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
file.jswith only double quotes"changed to'git commit -am "I don't like double quotes"prettier --write file.js, converting all the'back to"'are stagedNow
file.jswith only double-quotes"changed to'git commit -am "I don't like double quotes"prettier --write file.js, converting all the'back to"v15.4.3Compare Source
Patch Changes
cbfed1dThanks @tarik02! - Adjust TypeScript types for the default export so that it can be used as a value without error TS2693.v15.4.2Compare Source
Patch Changes
8827ebfThanks @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.1Compare Source
Patch Changes
#1504
1c7a45eThanks @iiroj! - Default TypeScript config filenames match JS equivalents.#1504
9cc18c9Thanks @iiroj! - Add missing conditional exports syntax for TypeScript types.v15.4.0Compare Source
Minor Changes
#1500
a8ec1ddThanks @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:It's also possible to use the
.tsfile extension for the configuration if your Node.js version supports it. The--experimental-strip-typesflag was introduced in Node.js v22.6.0 and unflagged in v23.6.0, enabling Node.js to execute TypeScript files without additional configuration.Patch Changes
9b79364Thanks @iiroj! - Handle possible failures when logging user shell for debug info.v15.3.0Compare Source
Minor Changes
#1495
e69da9eThanks @iiroj! - Added more info to the debug logs so that "environment" info doesn't need to be added separately to GitHub issues.#1493
fa0fe98Thanks @iiroj! - Added more help messages around the automaticgit stashthat 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:
where the backup can be seen with
git show 20addf8, orgit stash list:v15.2.11Compare Source
Patch Changes
#1484
bcfe309Thanks @wormsik! - Escape paths containing spaces when using the "shell" option.#1487
7dd8caaThanks @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.10Compare Source
Patch Changes
e3f283bThanks @iiroj! - Update minor dependencies, includingmicromatch@~4.0.8.v15.2.9Compare Source
Patch Changes
b69ce2dThanks @iiroj! - Set the maximum number of event listeners to the number of tasks. This should silence the console warningMaxListenersExceededWarning: Possible EventEmitter memory leak detected.v15.2.8Compare Source
Patch Changes
f0480f0Thanks @iiroj! - In the previous version the nativegit rev-parse --show-toplevelcommand was taken into use for resolving the current git repo root. This version switched the--show-toplevelflag with--show-cdup, because on Git installed via MSYS2 the former was returning absolute paths that do not work with Node.jschild_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.7Compare Source
Patch Changes
a51be80Thanks @iiroj! - In the previous version the nativegit rev-parse --show-toplevelcommand was taken into use for resolving the current git repo root. This version drops the--path-format=absoluteoption to support earlier git versions since it's also the default behavior. If you are still having trouble, please try upgradinggitto the latest version.v15.2.6Compare Source
Patch Changes
119adb2Thanks @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.5Compare Source
Patch Changes
#1424
31a1f95Thanks @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
91abea0Thanks @iiroj! - Improve error logging when failing to read or parse a configuration file#1424
ee43f15Thanks @iiroj! - Upgrade micromatch@4.0.7v15.2.4Compare Source
Patch Changes
4f4537aThanks @iiroj! - Fix release issue with previous version; update dependenciesv15.2.2Compare Source
Patch Changes
fdcdad4Thanks @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.1Compare Source
Patch Changes
#1484
bcfe309Thanks @wormsik! - Escape paths containing spaces when using the "shell" option.#1487
7dd8caaThanks @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.0Compare Source
Minor Changes
f3378beThanks @iiroj! - Using the--no-stashflag 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-stagedthat is automatically enabled when--no-stashis used.Patch Changes
#1362
17bc480Thanks @antonk52! - update lilconfig@3.0.0#1368
7c55ca9Thanks @iiroj! - Update most dependencies#1368
777d4e9Thanks @iiroj! - To improve performance, only uselilconfigwhen 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
85eb0ddThanks @iiroj! - When determining git directory, usefs.realpath()only for symlinks. It looks likefs.realpath()changes some Windows mapped network filepaths unexpectedly, causing issues.v15.1.0Compare Source
Minor Changes
0423311Thanks @danielbayley! - Add support for loading configuration frompackage.yamlandpackage.ymlfiles, supported bypnpm.Patch Changes
105d901Thanks @iiroj! - Suppress some warnings when using the "--quiet" flagv15.0.2Compare Source
Patch Changes
8e82364Thanks @iiroj! - Update dependencies, including listr2@7.0.2 to fix an upstream issue affecting lint-staged.v15.0.1Compare Source
Patch Changes
d2e6f8bThanks @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.0Compare Source
Major Changes
#1322
66b93aaThanks @iiroj! - Require at least Node.js 18.12.0This 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.1Compare Source
Bug Fixes
v14.0.0Compare Source
Features
BREAKING CHANGES
16.14.0.v13.3.0Compare Source
Bug Fixes
Features
listr2@​6.6.0(09844ca)v13.2.3Compare Source
Bug Fixes
--diffoption implies--no-stash(66a716d)v13.2.2Compare Source
Bug Fixes
yaml@2.2.2(GHSA-f9xv-q969-pqx4) (#1290) (cf691aa)v13.2.1Compare Source
Bug Fixes
v13.2.0Compare Source
Bug Fixes
colorettewithchalkfor better color support detection (f598725)Features
v13.1.4Compare Source
v13.1.3Compare Source
v13.1.2Compare Source
Bug Fixes
v13.1.1Compare Source
Bug Fixes
--stashwhen using the--diffoption (99390c3)v13.1.0Compare Source
Features
v13.0.4Compare Source
Bug Fixes
v13.0.3Compare Source
Bug Fixes
v13.0.2Compare Source
Bug Fixes
--diffand--diff-filteroptions when checking task modifications (1a5a66a)v13.0.1Compare Source
Bug Fixes
process.killwhen killing tasks on failure (f2c6bdd)Performance Improvements
EventsEmitterinstead ofsetIntervalfor killing tasks on failure (c508b46)v13.0.0Compare Source
Bug Fixes
execa@^6.1.0(659c85c)yaml@^2.1.1(2750a3d)Features
BREAKING CHANGES
lint-stagedwill no longer support Node.js 12, which is EOL since 30 April 2022v12.5.0Compare Source
Bug Fixes
--config <path>(641d1c2)--diffoption (d4da24d)Features
--diff-filteroption for overriding list of (staged) files (753ef72)--diffoption for overriding list of (staged) files (35fcce9)v12.4.3Compare Source
Bug Fixes
v12.4.2Compare Source
Bug Fixes
v12.4.1Compare Source
Bug Fixes
v12.4.0Compare Source
Bug Fixes
parseGitZOutput(a118817)Features
--max-arg-lengthcli option (e8291b0)v12.3.8Compare Source
Bug Fixes
v12.3.7Compare Source
Bug Fixes
--silentandFORCE_COLORsettings (d327873)v12.3.6Compare Source
Bug Fixes
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.