eslint-config-rickschubert
v1.0.12ESLint 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. |
npm i eslint-config-rickschubert
Metadata
- ISC
- Whatever
- Rick Schubert
- released 4/26/2022