1.0.1 • Published 3 years ago

@thomaschaplin/eslint-config v1.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

eslint-config

Preferring ES6, readability and low ambiguities. Extends the recommended ruleset with some useful additions.

Setup Guide

Follow the below steps to setup ESLint using this custom configuration

JavaScript

  • npm install eslint --save-dev
  • npm install @thomaschaplin/eslint-config --save-dev
  • touch .eslintrc
  • Add the below snippet into your .eslintrc file
  • Add the below script snippet into your package.json file

.eslintrc snippet

{
    "extends": ["@thomaschaplin"]
}

package.json snippet

"scripts": {
    "lint:js": "./node_modules/eslint/bin/eslint.js 'src/**/*.js'",
    "lintFull": "npm run lint:js -- --fix"
}

TypeScript

Follow all of the steps for the JavaScript setup

  • npm install typescript --save-dev
  • npm install @typescript-eslint/eslint-plugin --save-dev
  • npm install @typescript-eslint/parser --save-dev
  • Add the below snippet into your .eslintrc file
  • Add the below script snippet into your package.json file

.eslintrc snippet

{
    "extends": ["@thomaschaplin"],
    "plugins": ["@typescript-eslint"],
    "parser": "@typescript-eslint/parser",
    "parserOptions": {
        "ecmaVersion": 6,
        "sourceType": "module",
        "ecmaFeatures": {
            "modules": true
        }
    }
}

package.json snippet

"scripts": {
    "lint:ts": "./node_modules/eslint/bin/eslint.js 'src/**/*.ts'",
    "lintFull": "npm run lint:ts -- --fix"
}

Rules in detail

Environments: node, es6, browser

Unless noted, all rules are errors.

RuleDescription
arrow-parensAlways wrap function arguments in brackets.
brace-styleCurly brackets start after the keyword, not underneath.
comma-dangleDangling commas in multiline objects, functions, arrays.
complexityMaximum cyclomatic complexity of 3 to enforce highly maintaineable code (warning).
curlyCurly brackets after if statements to avoid ambiguity when line breaks occur.
eol-lastEmpty line at the end of the file.
func-call-spacingBrackets () to invoke a function have to stand right next to the function name.
global-requirerequire() statements should be at the top of the file (warning).
linebreak-styleUNIX linebreaks.
no-await-in-loopDisallow await in loops (should use Promise.all() instead).
no-default-exportOnly allow named exports for increased consistency and clarity when importing modules.
no-floating-decimalNumbers have to be clear, i.e. 0.4 instead of .4.
no-implicit-coercionConverting types from one to another have to be explicit.
no-lone-blocksNo curly brackets unless necessary.
no-lonely-ifUse else if instead of a lonely if wrapped inside an else.
no-loop-funcFunctions cannot be declared inside loops, they should be declared outside.
no-template-curly-in-stringAvoid confusion whether a string is templated or not.
no-throw-literalThrow errors explicitly, not just strings or values.
no-varUse ES6 block-scopedconst and let, never var.
one-varDon't declare multiple variables in one line.
prefer-constlet should only be used where reassignment is necessary.
prefer-promise-reject-errorsPromises should be rejected with a clear error, not a simple value.
prefer-spreadUse ES6 spread operator instead of difficult to understand ES5 .apply().
prefer-templateUse template strings instead of string concatenation (warning).
quotesUse unescaped double quotes.
require-awaitasync functions should perform an await, otherwise async keyword is unnecessary.
semiDon't use semicolons.
yodaDon't use unintuitive conditions.