1.0.1 • Public • Published


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


  • 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"


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.

Package Sidebar


npm i @thomaschaplin/eslint-config

Weekly Downloads






Unpacked Size

9.98 kB

Total Files


Last publish


  • thomaschaplin