Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

eslint-plugin-maintainable

asmyshlyaev17734MITdeprecated0.4.4

Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

Eslint config to keep code clean and in maintainable state

eslint, eslintplugin, eslint-plugin, eslint-config, eslintconfig, typescript, clean code, quality, prettier, code format, maintainable code, maintainability, manageable code, readable code, readability, coding-style, typescript

readme

eslint-plugin-maintainable

npm

This plugin focused on keeping the code clean, maintainable, and readable for humans. Because coders read existing code most of the times, cumbersome code will slow you down and lead to bugs.

This is achieved via rules like complexity, sonarjs/cognitive-complexity, max-params, max-nested-callbacks etc. Also, line length is limited to 80 characters, so it's convinient to split and edit code side by side.

Also includes setup to format code with prettier via eslint, so no hassle to set up those two.

Feel free to ask questions or propose improvements to "issues"

:star: if you like the the project :)

Installation and setup

1. Install via npm

Need eslint 8+ and prettier 3+

npm i -D eslint@8 eslint-plugin-maintainable@latest prettier@latest

{
    "extends": [
      "plugin:maintainable/recommended",
      "plugin:maintainable/react",
      "...your others configs"
    ],
    "plugins": [
        "maintainable"
        "...your others plugins"
    ]
}

Typescript/JS

By default plugin intended to be used with Typescript, but can tune it for pure JS, just change parser to default "espree" or "@babel/eslint-parser".

 "parser": "espree",

3. Add .editorconfig, IDEs and prettier will format code according to it

root = true

[*]
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
indent_style = space
indent_size = 2
quote_type = single
max_line_length = 80

4. Add browserslist to package.json

eslint-plugin-compat will tell you if you use api that not supported by browsers

  "browserslist": [
    "last 5 Chrome versions",
    "last 5 ChromeAndroid versions",
    "last 5 Firefox versions",
    "last 5 FirefoxAndroid versions",
    "Firefox ESR",
    "last 3 Safari major versions",
    "last 2 iOS major versions"
  ],

5. Enforce it via husky and lint-staged

Install deps

npm i -D husky lint-staged
npx husky install

More details at lint-staged repo

Edit(or create) file pre-commit in .husky directory with this content:

#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"

npx lint-staged

And update package.json

  "lint-staged": {
    "*.{js,jsx,ts,tsx}": [
      "eslint --fix",
    ],
    "*.{html,css,less,ejs,json}": [
      "prettier --write",
    ]
  },

Configurations

| | Name | Description | | --- | ------------- | --------------------------------------- | | ✅ | base | Basic rules and prettier formatter | | ✅ | recommended | Basic + more rules for Node and Browser | | ✅ | react | Basic + React specific rules |

You can take a look at configs definitions