Slowlint
Implement linting with ESLint slowly on big projects.
WTF
Sometimes you need to add linting to existing projects. And you have to take it lazy to avoid many merge conflicts, failing builds and etc.
That's where Slowlint saves the day.
How it is supposed to work:
- You add ESLint, ESLint config and
.eslintignore
to project as usual. - You run Slowlint to make a file with all temporary ignores (files which don't pass linting).
- You add two checks to your CI on every commit:
- check that all good files still pass linting
- check that bad files did not become good
This is the least invasive way to ensure that your code will not become worse and will lazily become better.
Step by step
1. ESLint setup
Install ESLint, plugins, set up config, .eslintignore
and etc - just as usual.
2. Generate .slowlintignore file
That's same as .eslintignore
but with another name. Why bother?
.slowlintignore
only contains files which could be fixed. Files from.eslintignore
are not meant to be fixed.- Any IDE will use
.eslintignore
and ignore.slowlintignore
- just as planned! - You can use both
.eslintignore
and.slowlintignore
.
Example
slowlint save-ignored --files src test --eslint-path ~/project1/node_modules/eslint
3. Lint
Slowlint can use your existing ESLint package and configuration for linting with both .eslintignore
and.slowlintignore
files.
That's great for CI!
Example
slowlint lint --files src test --eslint-path ~/project1/node_modules/eslint
4. Check for good files
Slowlint can also check if good files (which pass linting) are included in .slowlintignore
file.
Example
slowlint check-good --files src test --eslint-path ~/project1/node_modules/eslint
Installation
// install it locallynpm i slowlint --save-dev // or install globallynpm i -g slowlint // or simply run with npxnpx slowlint check-good --files src test --eslint-path ~/project1/node_modules/eslint
Usage
Usage: slowlint <command> [options]
Commands:
slowlint lint Lint everything but bad files
slowlint check-good Check if good files are listed as bad
slowlint save-ignored Make a new list of ignored files
Options:
Options:
--version Show version number [boolean]
--files filenames [array] [required]
--eslintPath eslint path [string] [default: "./node_modules/eslint"]
--ignoreFilePath path for .slowlintignore file [string] [default: ".slowlintignore"]
--noProgress hide progress bar [boolean] [default: false]
-h, --help Show help [boolean]
Examples:
Lint all files from project in current diirectory using linter and config from project:
slowlint lint --files .
Lint bin
and test
dirs using linter from some project1:
slowlint lint --files bin test --eslint-path ~/project1/node_modules/eslint