Skip to content

thomaschaplin/eslint-config

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

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 rejected 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.

Releases

No releases published

Sponsor this project

 

Packages

No packages published