editorconfig-checker
What?
This is a tool to check if your files consider your .editorconfig
.
Most tools - like linters for example - only test one filetype and need an extra configuration.
This tool only needs your editorconfig to check all files.
Installation
Installation via npm/yarn is recommended:
yarn add editorconfig-checker
./node_modules/.bin/editorconfig-checker
npm install --save-dev editorconfig-checker
./node_modules/.bin/editorconfig-checker
# or in a npm-script just
editorconfig-checker
Otherwise you could clone the repository and execute the script manually.
git clone git@github.com:editorconfig-checker/editorconfig-checker.javascript.git
&& cd editorconfig-checker.javascript
&& make setup
&& ./editorconfig-checker.javascript/dist/index
Usage
If you installed it via npm you have a binary in your node_modules/.bin
folder called editorconfig-checker
.
Then you could create a script in your package.json
like this:
"scripts": {
"lint:editorconfig": "editorconfig-checker src"
}
To check multiple directories you could use it like this:
"scripts": {
"lint:editorconfig": "editorconfig-checker src someOhterDir anohterDir"
}
You could also use a glob to check your files:
"scripts": {
"lint:editorconfig": "editorconfig-checker ./src/{editorconfig,logger}/**/*"
}
If no directory is given the current working directory will be used as root and all files will be checked.
If you want to filter the files you could do this via the exclude-pattern
or --exclude-regexp
parameter
ATTENTION: --exclude-pattern
will be way faster especially in bigger projects because it prefilters the files, in contrast --exclude--regexp
will first collect all files and filter them after.
If you use a regular expression you should always put single quotes around it
because the special characters(e.g. |
, *
, .
or whatever) will be interpreted by your shell before if you don't.
Some examples:
editorconfig-checker --exclude-pattern './**/*.json'
editorconfig-checker --exclude-regexp '\\.json$'
editorconfig-checker --exclude-pattern './**/*TestFiles*/*' --exclude-pattern './**/*.json'
editorconfig-checker --exclude-regexp 'TestFiles|\\.json$'
editorconfig-checker -i -d --exclude-pattern './**/*TestFiles*/*'
editorconfig-checker --ignore-defaults --dotfiles --exclude-regexp 'TestFiles'
If you just want to filter for one string you don't have to worry and if you want to filter for more strings you could also pass the --exclude-regexp|--exclude-pattern
option more than once like this:
./node_modules/.bin/editorconfig-checker --exclude-regexp node_modules --exclude-regexp myBinary --exclude-regexp someGeneratedFile --exclude-regexp myPicture
./node_modules/.bin/editorconfig-checker --exclude-pattern './node_modules/**' --exclude-pattern './myBinary' --exclude-pattern './dist/someGeneratedFile' --exclude-pattern './pictures/myPicture'
If you installed it manually you would have to do something like this:
<PATH/TO/ROOT/OF/THIS/REPOS>/dist/index.js src
The exit value is 0 if no error occurred and 1 to 254 - every error adds 1 to the exit value.
255 means that there is more than 254 violations of your .editorconfig
rules.
Usage output:
Usage:
editorconfig-checker [OPTIONS] <DIRECTORY>
available options:
-d, --dotfiles
use this flag if you want to exclude dotfiles
--exclude-pattern <PATTERN>');
pattern to filter files which should not be checked');
--exclude-regexp <REGEXP>');
regex to filter files which should not be checked');
-i, --ignore-defaults
will ignore default excludes, see README for details
-h, --help
will print this help text
-l, --list-files
will print all files which are checked to stdout
Disabling single lines
It is possible to disable single lines with placing a comment - or theoretically
any other string which includes editorconfig-disable-line
on that line.
Example as it is working now:
const x = 'this constant is indented false'; // editorconfig-disable-line
Disabling files
It is possible to disable files with placing a comment - or theoretically
any other string which includes editorconfig-disable-file
on the first line.
Example as it is working now:
// editorconfig-disable-file
const x = 'this constant is indented false';
...
const y = 'everything is indented false';
Default ignores:
'./**/vendor/**/*',
'./**/node_modules/**/*',
'./**/coverage/**/*',
'./**/.DS_Store/**/*',
'./.git/**',
'./**/*.gif',
'./**/*.png',
'./**/*.bmp',
'./**/*.jpg',
'./**/*.svg',
'./**/*.ico',
'./**/*.lock',
'./**/*.eot',
'./**/*.woff',
'./**/*.woff2',
'./**/*.ttf',
'./**/*.bak',
'./**/*.bin',
'./**/*.min.js',
'./**/*.min.css',
'./**/*.pdf',
'./**/*.jpeg'
Suggestions are welcome!
Additional Notes
I use semantic versioning so every breaking change will result in the increase of the major version.
If you encounter any bugs or anything else please open an issue with as many details as possible.
You should use the -l
option after installing and configuring this tool to see if all files are
checked.