Skip to content

An ESLint plugin to enforce EditorConfig rules (Sorry, ESLint v9 support is not ready yet)

License

Notifications You must be signed in to change notification settings

phanect/eslint-plugin-editorconfig

Folders and files

NameName
Last commit message
Last commit date

Latest commit

c5a1df6 Β· May 30, 2024
May 30, 2024
Jul 17, 2023
Jan 3, 2024
May 30, 2024
May 30, 2024
May 30, 2024
Jul 17, 2023
Jul 1, 2022
Dec 18, 2020
May 30, 2024
Oct 17, 2021
May 30, 2024
May 30, 2024
Oct 17, 2021
Jan 3, 2024

Repository files navigation

eslint-plugin-editorconfig

An ESLint plugin to enforce EditorConfig rules

GitHub Actions Status NPM Version

Requirements

  • 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}

Install

$ 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

Usage

eslint.config.* (Flat Config)

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.

.eslintrc.*

Like other ESLint plugins,

  • add rules in the rules
  • add "editorconfig" in the plugins

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" ]
}

Conflicting ESLint rules

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.

Rules

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 βœ…

License & Credit

MIT

This plugin includes code derived from klona.