Socket
Socket
Sign inDemoInstall

eslint-plugin-maintainable

Package Overview
Dependencies
323
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    eslint-plugin-maintainable

Eslint config to keep code clean and in maintainable state


Version published
Weekly downloads
6
decreased by-76%
Maintainers
1
Created
Weekly downloads
 

Readme

Source

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@latest 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

NameDescription
baseBasic rules and prettier formatter
recommendedBasic + more rules for Node and Browser
reactBasic + React specific rules

You can take a look at configs definitions

Keywords

FAQs

Last updated on 25 Mar 2024

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc