eslint-config-rickschubert
v1.0.12
Published
ESLint Configuration "Rick Schubert" ===================================
Downloads
1,699
Readme
ESLint Configuration "Rick Schubert"
Preferring ES6, readability and low ambiguities. Extends the recommended ruleset with some useful additions.
How to use
- Install:
npm install eslint-config-rickschubert --save-dev
- Add it to your ESLint configuration:
{
"extends": ["rickschubert"]
}
Typescript
- Install the Typescript ESLint parser and plugin:
npm i @typescript-eslint/eslint-plugin @typescript-eslint/parser --save-dev
- Add parser and plugin to your ESLint configuration:
{
"extends": ["rickschubert"],
"plugins": ["@typescript-eslint"],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": 6,
"sourceType": "module",
"ecmaFeatures": {
"modules": true
}
}
}
- Currently, the TSLint parser has a few minor issues. For example, importing types triggers the rule
no-unused-vars
despite them being actually used as type annotations.
Rules in detail
Environments: node
, es6
, browser
Unless noted, all rules are errors.
| Rule | Description |
|------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------|
| arrow-parens | Always wrap function arguments in brackets. |
| brace-style | Curly brackets start after the keyword, not underneath. |
| comma-dangle | Dangling commas in multiline objects, functions, arrays. |
| complexity | Maximum cyclomatic complexity of 3 to enforce highly maintaineable code (warning). |
| curly | Curly brackets after if statements to avoid ambiguity when line breaks occur. |
| eol-last | Empty line at the end of the file. |
| func-call-spacing | Brackets ()
to invoke a function have to stand right next to the function name. |
| global-require | require()
statements should be at the top of the file (warning). |
| linebreak-style | UNIX linebreaks. |
| no-await-in-loop | Disallow await
in loops (should use Promise.all()
instead). |
| no-default-export | Only allow named exports for increased consistency and clarity when importing modules. |
| no-floating-decimal | Numbers have to be clear, i.e. 0.4
instead of .4
. |
| no-implicit-coercion | Converting types from one to another have to be explicit. |
| no-lone-blocks | No curly brackets unless necessary. |
| no-lonely-if | Use else if
instead of a lonely if
wrapped inside an else
. |
| no-loop-func | Functions cannot be declared inside loops, they should be declared outside. |
| no-template-curly-in-string | Avoid confusion whether a string is templated or not. |
| no-throw-literal | Throw errors explicitly, not just strings or values. |
| no-var | Use ES6 block-scopedconst
and let
, never var
. |
| one-var | Don't declare multiple variables in one line. |
| prefer-const | let
should only be used where reassignment is necessary. |
| prefer-promise-reject-errors | Promises should be reject
ed with a clear error, not a simple value. |
| prefer-spread | Use ES6 spread operator instead of difficult to understand ES5 .apply()
. |
| prefer-template | Use template strings instead of string concatenation (warning). |
| quotes | Use unescaped double quotes. |
| require-await | async
functions should perform an await
, otherwise async
keyword is unnecessary. |
| semi | Don't use semicolons. |
| yoda | Don't use unintuitive conditions. |