Compare Versions - lint-staged
npm / lint-staged / Compare Versions
17.0.6
Patch Changes
-
#1803
bdf2770- Run all tests with Deno, in addition to Node.js and Bun. -
#1796
7508272- Fix performance regression of lint-staged v17 by going back to usinggit addto stage task modifications. This was changed togit update-index --againin v17 for less manual work, but unfortunately theupdate-indexcommand gets slower in very large Git repos. -
#1797
7b2505a- This version of lint-staged uses the new staged publishing for npm packages feature. Releases are already published from GitHub Actions with trusted publishing, but now an additional approval with two-factor authentication is also required. -
#1802
321b0a9- Downgrade dependencytinyexec@1.2.2to avoid issues in version 1.2.3.
17.0.4
Patch Changes
-
#1788
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 withgit add <file>, and then committed withgit commit - after editing
<file>it is committed withgit commit --allwithout explicitgit add - after editing
<file>it is committed withgit commit <pathspec>without explicitgit add
There's new test cases which actually setup the Git
pre_commithook 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. - after editing
17.0.3
Patch Changes
- #1782
06813f9Thanks @iiroj! - Fix lint-staged behavior when implicitly committing files without usinggit addby either:git commit -am "my commit message"where-a(--all) means to automatically stage all tracked modified and deleted filesgit commit -m "my commit message" .where.is an example of a pathspec where matching files will be staged
17.0.0
Major Changes
-
#1745
e244adfThanks @iiroj! - Node.js v20 is no longer supported, and the oldest supported version is now22.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! -
#1676
0584e0bThanks @outslept! - Lint-staged now tries to verify the installed Git version is at least2.32.0, released in 2021. If you're using an even older Git version, you need to upgrade it before running lint-staged! -
#1745
2dcc40aThanks @iiroj! - The dependencyyamlis 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:npm install --development yamlIf you're using
.lintstagedrcas 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.jsonto avoid needing to installyaml.
Minor Changes
-
#1748
809d5efThanks @iiroj! - Add new option--hide-allfor hiding all unstaged changes and untracked files, before running tasks. This makes it easier to run tools like Knip which check for unused code. Untracked files are included in the backup stash and restored automatically after running. -
#1759
f13045aThanks @iiroj! - Update dependencies, includingtinyexec@1.1.1to fix the following issues:- When using a Node.js version manager with multiple versions installed (nvm, n, for example), scripts with the
#!/usr/bin/env nodeshebang (Prettier, ESLint, for example) were previously spawned using the default Node.js version configured by the version manager (the onewhich nodepoints 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), the
nodeexecutable available inPATHis a symlink pointing to Snap itself. The sandboxing features of Snap prevented lint-staged from spawning scripts with the#!/usr/bin/env nodeshebang, because it meant lint-staged tried to spawn Snap via the symlink. This resulted in anENOENTerror when trying to runprettier, for example. Now, since the realnodeexecutable's directory is available in thePATH, lint-staged will instead spawn the script with the realnodebinary succesfully.
- When using a Node.js version manager with multiple versions installed (nvm, n, for example), scripts with the
-
#1761
d3251b1Thanks @iiroj! - Lint-staged now runsgit update-index --againafter running tasks, instead ofgit add <originally staged files>. This should improve compatibility when using non-default indexes, for example when committing with a pathspecgit commit -m "message" .instead of adding files to the index. -
#1745
a9585acThanks @iiroj! - Removecommanderas a dependency and use the built-inparseArgsfromnode:utilto parse CLI flags.
Patch Changes
-
#1755
c82d30bThanks @iiroj! - All tests now pass on the Bun runtime (latest). -
#1750
a401818Thanks @iiroj! - Remove manual handling forgit stash --keep-indexresurrecting deleted files, because the issue was fixed in Git2.23.0and lint-staged requires at least Git2.32.0. -
#1771
c4b8936Thanks @iiroj! - Fix documentation about multiple config files and the--cwdoption. When using it, all tasks will be run in the specified directory. For example, to run everything in the actualprocess.cwd(), uselint-staged --cwd=".".
16.4.0
Minor Changes
- #1739
687fc90Thanks @hyperz111! - Replacemicromatchwithpicomatchto reduce dependencies.
16.3.4
Patch Changes
- #1742
9d6e827Thanks @iiroj! - Update dependencies, includingtinyexec@1.0.4to make sure localnode_modules/.binare preferred to global locations (released intinyexec@1.0.3).
16.3.0
Minor Changes
-
#1698
feda37aThanks @iiroj! - Run external processes withtinyexecinstead ofnano-spawn.nano-spawnreplacedexecain lint-staged version 16 to limit the amount of npm dependencies required, but caused some unknown issues related to spawning tasks. Let's hopetinyexecimproves the situation. -
#1699
1346d16Thanks @iiroj! - Removepidtreeas a dependency. When a task fails, its sub-processes are killed more efficiently via the process group on Unix systems, and thetaskkillcommand on Windows.
Patch Changes
16.2.6
Patch Changes
- #1693
33d4502Thanks @Adrian-Baran-GY! - Fix problems with--continue-on-erroroption, where tasks might have still been killed (SIGINT) when one of them failed.
16.2.2
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:
% 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
16.2.1
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.
16.2.0
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 https://github.com/debug-js/debug/issues/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 https://github.com/chalk/chalk/issues/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.
16.1.3
Patch Changes
- #1602
7ea700bThanks @dword-design! - Add thetypesfield topackage.jsonto make sure NPM detects lint-staged includes built-in TypeScript type definitions.
16.1.2
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.
16.1.1
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.
16.1.0
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
- #1558
c37dc38Thanks @iiroj! - The minimum required Node.js version is lowered to20.17following nano-spawn@1.0.2.
16.0.0
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"$@":# my-script.sh #!/bin/bash echo "Staged files: $@"and
{ "*.js": "my-script.sh" }If you were using the shell option to avoid passing filenames to tasks, for example
bash -c 'tsc --noEmit', use the function syntax instead:export default { '*.ts': () => 'tsc --noEmit' } -
#1546
158d15cThanks @iiroj! - Validation for deprecated advanced configuration has been removed. The advanced configuration was removed in lint-staged version 9 and until now validation has failed if advanced configuration options were detected. Going forward the entire configuration will be treated with the same logic and if these advanced options are still present, they might be treated as valid globs for staged files instead. -
#1546
158d15cThanks @iiroj! - The lowest supported Node.js version is20.18. Please upgrade your Node.js version.
Minor Changes
-
#1401
27110efThanks @RohitLuthra19! - Added support for directly running functions on staged files. To configure a function task, use an object with a title and the task itself:export default { '*.js': { title: 'My task', task: async (files) => { console.log('Staged JS files:', files) }, }, }Lint-staged will run your function task with the staged files matching the configured glob as its argument, and show the custom title in its console output.
15.5.2
Patch Changes
- #1544
5561321Thanks @YimingIsCOLD! - Correctly handle colon (:) characters in staged filenames.
15.5.0
Minor Changes
-
#1526
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
- Stage
file.jswith 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.jswith 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
- Stage
15.4.2
Patch Changes
- #1509
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.
15.4.0
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:/** * @filename: lint-staged.config.js * @type {import('lint-staged').Configuration} */ export default { '*': 'prettier --write', }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.export NODE_OPTIONS="--experimental-strip-types" npx lint-staged --config lint-staged.config.ts
Patch Changes
15.3.0
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:
% 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, orgit stash list:% git stash list stash@{0}: lint-staged automatic backup (20addf8)
15.2.8
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.
15.2.7
Patch Changes
- #1440
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.
15.2.5
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
15.2.0
Minor Changes
- #1371
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
-
#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.
15.0.1
Patch Changes
- #1217
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.
v13.0.1 - 08 Jun 2022
Bug Fixes
- correct spelling of "0 files" (f27f1d4)
- suppress error from
process.killwhen 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
EventsEmitterinstead ofsetIntervalfor killing tasks on failure (c508b46)
v12.0.0 - 13 Nov 2021
Features
BREAKING CHANGES
- lint-staged is now a pure ESM module, and thus
requires Node.js version
^12.20.0 || ^14.13.1 || >=16.0.0.
To update your Node.js integration, please use:
// const lintStaged = require('lint-staged')
import lintStaged from 'lint-staged'
v11.3.0-beta.2 - 30 Oct 2021
Bug Fixes
- correctly import
js-yamlto fix yaml config loading (#1033) (612d806) - detect git repo root correctly on cygwin (#1026) (f291824), closes #1025
- remove dangling chars from git dir (#1028) (11c004e), closes #1027
- revert back to
cosmiconfigfromlilconfig(#1035) (e035b80), closes #1033 #981 - unbreak windows by correctly normalizing cwd (#1029) (f861d8d)
Performance Improvements
v11.3.0-beta.1 - 04 Oct 2021
Bug Fixes
- add
--no-stashas hidden option for backwards-compatibility (73db492) - do not apply empty patch (a7c1c0b)
- do not use
fs/promisesfor Node.js 12 compatibility (c99a6a1) - restore original state when preventing an empty commit (f7ef8ef)
- restore previous order of jobs (ba62b22)
Features
- do not use a git stash for better performance (ff0cc0d)
Performance Improvements
v11.2.0-beta.1 - 02 Oct 2021
Bug Fixes
- add
--no-stashas hidden option for backwards-compatibility (73db492) - do not apply empty patch (a7c1c0b)
- do not use
fs/promisesfor Node.js 12 compatibility (c99a6a1) - restore original state when preventing an empty commit (f7ef8ef)
- restore previous order of jobs (ba62b22)
Features
- do not use a git stash for better performance (ff0cc0d)
Performance Improvements
v10.0.0 - 19 Jan 2020
Bug Fixes
- add all modified files to git index with
git add .(bf532c2) - automatically add modifications only to originally staged files (083b8e7)
- better workaround for git stash --keep-index bug (f3ae378)
- correctly leave only staged files for running tasks (cfde9ca)
- correctly recover when unstaged changes cannot be restored (d091f71)
- correctly restore untracked files from backup stash (c7d0592)
- error handling skips dropping backup stash after internal git errors (30b4809)
- fail with a message when backup stash is missing (1b64239)
- gitWorkflow handles active merge mode (2f1e886)
- handle git MERGE_* files separately; improve error handling (da22cf2)
- improve debug logging (f88e226)
- keep untracked files around by backing them up (fc03fdc)
- max arg length is by default half of the allowed to prevent edge cases (80406c2)
- prevent Listr from hiding git add warning (cce9809)
- restore metadata about git merge before running tasks (f8ddfc2)
- retry failing apply with 3-way merge (76cb08f)
- support binary files (7b3a334)
- try applying unstaged changes before handling errors (357934f)
- update warning about git add, and to README (6467a66)
- workaround for stashing deleted files for git < 2.23 (1a87333)
Features
- automatically stage task modifications (74ed28d)
- bump Node.js version dependency to at least 10.13.0 (#747) (814b9df)
- split tasks into chunks to support shells with limited max argument length (#732) (cb43872)
- support async function tasks (20d5c5d)
- throw error to prevent empty commits unless --allow-empty is used (#762) (8bdeec0)
- use git stashes for gitWorkflow (40a5db1)
- warn when task contains "git add" (5208399)
BREAKING CHANGES
- Previously, lint-staged would allow empty commits in the situation where a linter task like "prettier --write" reverts all staged changes automatically. Now the default behaviour is to throw an error with a helpful warning message. The --allow empty option can be used to allow empty commits, or
allowEmpty: truefor the Node.js API. - Node.js v8 is no longer supported because it will reach EOL on 2019-12-31
- Prior to version 10, tasks had to manually include
git addas the final step. This behavior has been integrated into lint-staged itself in order to prevent race conditions with multiple tasks editing the same files. If lint-staged detectsgit addin task configurations, it will show a warning in the console. Please removegit addfrom your configuration after upgrading.
v10.0.0-beta.15 - 08 Jan 2020
Features
BREAKING CHANGES
- Previously, lint-staged would allow empty commits in the situation where a linter task like "prettier --write" reverts all staged changes automatically. Now the default behaviour is to throw an error with a helpful warning message. The --allow empty option can be used to allow empty commits, or
allowEmpty: truefor the Node.js API.
v10.0.0-beta.14 - 24 Dec 2019
Bug Fixes
- error handling skips dropping backup stash after internal git errors (30b4809)
v10.0.0-beta.13 - 20 Dec 2019
Bug Fixes
- handle git MERGE_* files separately; improve error handling (da22cf2)
v10.0.0-beta.10 - 17 Dec 2019
Bug Fixes
- correctly recover when unstaged changes cannot be restored (d091f71)
v10.0.0-beta.9 - 16 Dec 2019
Bug Fixes
- restore metadata about git merge before running tasks (f8ddfc2)
v10.0.0-beta.7 - 05 Dec 2019
Bug Fixes
- automatically add modifications only to originally staged files (083b8e7)
Features
BREAKING CHANGES
- Node.js v8 is no longer supported because it will reach EOL on 2019-12-31
v10.0.0-beta.5 - 27 Nov 2019
Bug Fixes
v10.0.0-beta.4 - 20 Nov 2019
Features
v10.0.0-beta.2 - 14 Nov 2019
Bug Fixes
- correctly leave only staged files for running tasks (cfde9ca)
Reverts
- Revert "fix: no need to run
git clean -dfsince untracked changes are stashed" (e58ebbf)
v10.0.0-beta.15 - 08 Jan 2020
Features
BREAKING CHANGES
- Previously, lint-staged would allow empty commits in the situation where a linter task like "prettier --write" reverts all staged changes automatically. Now the default behaviour is to throw an error with a helpful warning message. The --allow empty option can be used to allow empty commits, or
allowEmpty: truefor the Node.js API.
v9.5.0-beta.2 (v9.5.0-beta.2@beta) - 03 Nov 2019
Bug Fixes
- no need to run
git clean -dfsince untracked changes are stashed (bbfae43) - update warning about git add, and to README (4fe53ef)
BREAKING CHANGES
- Prior to version 10, tasks had to manually include
git addas the final step. This behavior has been integrated into lint-staged itself in order to prevent race conditions with multiple tasks editing the same files. If lint-staged detectsgit addin task configurations, it will show a warning in the console. Please removegit addfrom your configuration after upgrading.
v9.5.0-beta.1 (v9.5.0-beta.1@beta) - 31 Oct 2019
Bug Fixes
- correctly restore untracked files from backup stash (0111f48)
- gitWorkflow handles active merge mode (959d9d9)
- keep untracked files around by backing them up (d20c5be)
- prevent Listr from hiding git add warning (2b57db0)
- retry failing apply with 3-way merge (30939b9)
- try applying unstaged changes before handling errors (080f1c6)
- workaround for stashing deleted files for git < 2.23 (50afea0)
Features
v9.0.0 - 01 Jul 2019
Bug Fixes
- parse titles for function linters (e24aaf2)
Code Refactoring
- remove advanced configuration options (04190c8)
- remove support for chunking (2ca9050)
- use execa's shell option to run commands (bed9127)
Features
- add --shell and --quiet flags (ecf9227)
- add deprecation error for advanced configuration (4bef26e)
- support function linter returning array of commands (36e54a2)
- support functions as linter commands (f76c0d1)
BREAKING CHANGES
- The advanced configuration options have been deprecated in favour of the simple format
- Local commands are no longer resolved by lint-staged, but execa will do this instead. In effect, there are no longer pretty error messages when commands are not found.
- Very long arguments strings are no longer chunked on Windows. Function linters should be used instead to customise this behaviour.
v7.0.0 - 21 Feb 2018
Bug Fixes
- package: Bump dependencies (267ff0f)
Code Refactoring
Features
Performance Improvements
BREAKING CHANGES
-
Requires Node.js v6 or later.
-
Remove implicit support for running npm scripts.
Consider example
lint-stagedconfig:{ "name": "My project", "version": "0.1.0", "scripts": { "my-custom-script": "linter --arg1 --arg2", "precommit": "lint-staged" }, "lint-staged": { "*.js": ["my-custom-script", "git add"] } }The list of commands should be changed to the following:
"*.js": ["npm run my-custom-script --", "git add"] -
The following
minimatchoptions are not supported inmicromatch:nocomment: https://github.com/isaacs/minimatch#nocommentflipnegate: https://github.com/isaacs/minimatch#flipnegate
v5.0.0 - 11 Nov 2017
Features
BREAKING CHANGES
gitDiroption deprecated and will be ignored. Additionally, glob patterns for linters should not be relative to the git root directory.
Consider a project with the following file structure:
`-- packages
|-- prj
| |-- package.json
| |-- src
| | `-- index.js
| `-- yarn.lock
`-- prj-2
`-- file
With lint-staged@4.3.0, the config would need to be something like this:
gitDir: ../..
linters:
packages/prj/src/*.js:
- eslint --fix
- git add
With lint-staged@5, this simplifies to:
linters:
src/*.js:
- eslint --fix
- git add
diff view
@@ -1,5 +1,4 @@
-gitDir: ../..
linters:
- packages/prj/src/*.js:
+ src/*.js:
- eslint --fix
- git add
v3.2.1 - 04 Nov 2016
- [fix]: Added
{ dot: true }to allow more complex globs with dots in path (#93) - [docs] Simpler pattern for matching js/jsx in the README.
- [docs] Be more specific about where to put
pre-commitin the installation instructions. (#87) - [chore]: Added commitizen conventional changelog (#92)
- [chore] update eslint to version 3.9.1 (#88)
- [chore]: update listr to version 0.7.0 (#85)
- [chore]: Removed unused dev dependencies.
v3.2.0 - 18 Oct 2016
- [feature] Support rc files extensions (
.json,.ymletc) as they aren't supported by default
v3.1.0 - 13 Oct 2016
- Split code into smaller modules + added tests for them. Closes #68
- Support for different configs via https://github.com/davidtheclark/cosmiconfig. Closes #64
- Run separate linters concurrently by default
- Added concurrent option to the config. Closes #63
- Switched to https://github.com/okonet/eslint-config-okonet
- lint-staged now work from sub-directories. #65 by @TheWolfNL
- Output both
stdoutandstderrin case of error. Closes #66
v3.0.3 - 22 Sep 2016
- Added
FORCE_COLORenv variable to force colors for packages that depend on https://www.npmjs.com/package/supports-color. Closes #50
v3.0.1 - 08 Sep 2016
- Switched to listr. Simplified code and more beautiful output.
- Switched to execa. Should fix #30
- Use ES2015. Dropped support for Node < 4.x
- Support commands with arguments in the lint-staged config. Closes #47
- Support binaries from $PATH. Closes #47
- Removed
--coloroption from runner. You should pass arguments yourself.