An ESLint plugin to enforce EditorConfig rules
- ESLint v8
- ESLint v9 and flat config support is not ready yet. Even if you use legacy .eslintrc.*, it does not work on v9. Sorry! 🙏
- Node.js v{18, 20, 22}
$ npm install --save-dev eslint@8 eslint-plugin-editorconfig
or
$ yarn add --dev eslint@8 eslint-plugin-editorconfig
If you use typescript-eslint, you need to install @typescript-eslint/eslint-plugin
too.
$ npm install --save-dev @typescript-eslint/eslint-plugin
Unfortunately, eslint-plugin-editorconfig does not work properly with Flat Config for now, even if you use @eslint/eslintrc
for compatibility.
Please wait for the next version.
Like other ESLint plugins,
- add rules in the
rules
- add
"editorconfig"
in theplugins
in your .eslintrc*
{
// ...
"rules": {
"editorconfig/charset": "error",
"editorconfig/eol-last": "error",
"editorconfig/indent": "error",
"editorconfig/linebreak-style": "error",
"editorconfig/no-trailing-spaces": "error"
},
"plugins": [ "editorconfig" ]
}
Or you can extend plugin:editorconfig/all
instead of adding rules.
{
// ...
"extends": [ "plugin:editorconfig/all" ],
"plugins": [ "editorconfig" ]
}
Following rules may conflict editorconfig/*
rule.
It is recommended to disable them.
eol-last
indent
linebreak-style
no-trailing-spaces
unicode-bom
@typescript-eslint/eol-last
@typescript-eslint/indent
@typescript-eslint/linebreak-style
@typescript-eslint/no-trailing-spaces
@typescript-eslint/unicode-bom
If above rules are specified in your .eslintrc, just remove them.
If they are specified in the extended config, consider adding plugin:editorconfig/noconflict
to your extends
.
{
"extends": [
"@phanect/phanective",
"plugin:editorconfig/noconflict"
],
// ...
}
If you extend plugin:editorconfig/all
, the rules above are turned off too, so you don't have to add plugin:editorconfig/noconflict
in addition to plugin:editorconfig/all
.
Internally, eslint-plugin-editorconfig uses the existing ESLint and typescript-eslint rules to verify/fix the code. Some rules allow passing options.
All the citation in the docs is from the backend ESLint rule document otherwise noted.
Rule | Description | Fixable |
---|---|---|
editorconfig/charset | Enforce EditorConfig rules for charset | ✅ |
editorconfig/eol-last | Enforce EditorConfig rules for the newlines at the end of files | ✅ |
editorconfig/indent | Enforce EditorConfig rules for indentation | ✅ |
editorconfig/linebreak-style | Enforce EditorConfig rules for linebreak style | ✅ |
editorconfig/no-trailing-spaces | Enforce EditorConfig rules for trailing spaces | ✅ |
This plugin includes code derived from klona.