.eslintrc
---
parser: babel-eslint
plugins:
- babel
- react
env:
es6: true
node: true
browser: true
ecmaFeatures:
modules: true
jsx: true
rules:
# Possible Errors
comma-dangle:
- 2
- never
no-cond-assign: 2
no-console: 1
no-constant-condition: 2
no-control-regex: 1
no-debugger: 2
no-dupe-args: 2
no-dupe-keys: 2
no-duplicate-case: 2
no-empty: 2
no-empty-character-class: 2
no-ex-assign: 2
no-extra-boolean-cast: 2
no-extra-parens:
- 2
- functions
no-extra-semi: 2
no-func-assign: 2
no-inner-declarations: 2
no-invalid-regexp: 2
no-irregular-whitespace: 2
no-negated-in-lhs: 2
no-obj-calls: 2
no-regex-spaces: 2
no-reserved-keys: 0 # ?
no-sparse-arrays: 2
no-unreachable: 2
use-isnan: 2
valid-jsdoc: 0 # fuck off
valid-typeof: 2
# Best Practices
accessor-pairs:
- 1
- setWithoutGet: true
block-scoped-var: 0
complexity: 0 # todo
consistent-return: 0
curly: 2
default-case: 0
dot-notation: 2
dot-location: 0
eqeqeq: 2
guard-for-in: 2
no-alert: 2
no-caller: 2
no-div-regex: 0
no-else-return: 2
no-empty-label: 2
no-eq-null: 2
no-eval: 2
no-extend-native: 2
no-extra-bind: 2
no-fallthrough: 2
no-floating-decimal: 2
no-implicit-coercion:
- 2
- boolean: true
number: true
string: true
no-implied-eval: 2
no-invalid-this: 2
no-iterator: 2
no-labels: 2
no-lone-blocks: 2
no-loop-func: 2
no-multi-spaces: 2
no-multi-str: 2
no-native-reassign: 2
no-new: 2
no-new-func: 2
no-new-wrappers: 2
no-octal: 2
no-octal-escape: 2
no-param-reassign: 1 # ?
no-process-env: 0
no-proto: 2
no-redeclare: 2
no-return-assign: 2
no-script-url: 2
no-self-compare: 2
no-sequences: 2
no-throw-literal: 2
no-unused-expressions: 0 # ? (chai)
no-useless-call: 2
no-void: 2
no-warning-comments: 0
no-with: 2
radix: 2
vars-on-top: 2
wrap-iife: 2
yoda: 2
no-unexpected-multiline: 1
# Strict Mode
strict:
- 2
- never
# Variables
init-declarations: 1
no-catch-shadow: 2
no-delete-var: 2
no-label-var: 2
no-shadow: 2
no-shadow-restricted-names: 2
no-undef: 2
no-undef-init: 2
no-undefined: 2
no-unused-vars:
- 1
- args: none
no-use-before-define:
- 2
- nofunc
# Node.js
callback-return:
- 1
-
- callback
- done
handle-callback-err: 2
no-mixed-requires: 2
no-new-require: 2
no-path-concat: 2
no-process-exit: 2
no-restricted-modules: 0
no-sync: 1 # ?
# Stylistic Issues
array-bracket-spacing:
- 2
- always
- singleValue: true
objectsInArrays: true
arraysInArrays: true
block-spacing:
- 2
- always
indent:
- 2
- 4
- SwitchCase: 1
brace-style:
- 2
- 1tbs
- allowSingleLine: false
camelcase: 0 # ?
comma-spacing:
- 2
- before: false
after: true
comma-style:
- 2
- last
computed-property-spacing: 0 # ?
consistent-this:
- 2
- self
eol-last: 2
func-names: 0
func-style: 0 # ?
id-length:
- 2
- min: 2
max: 35
exceptions:
- "i"
- "e"
lines-around-comment: 0
key-spacing:
- 2
- beforeColon: false
afterColon: true
linebreak-style:
- 2
- unix
max-nested-callbacks: # ?
- 1
- 3
new-cap: 0
new-parens: 2
newline-after-var: 1 # ?
no-array-constructor: 2
no-continue: 0
no-inline-comments: 0
no-lonely-if: 2
no-mixed-spaces-and-tabs: 2
no-multiple-empty-lines:
- 2
- max: 2
no-nested-ternary: 2
no-new-object: 2
no-spaced-func: 2
no-ternary: 0
no-trailing-spaces: 2
no-underscore-dangle: 0
no-unneeded-ternary: 2
object-curly-spacing:
- 2
- always
one-var: 0
operator-assignment:
- 2
- always
operator-linebreak:
- 2
- after
padded-blocks: 0
quote-props:
- 2
- as-needed
id-match: 0
quotes:
- 2
- single
semi:
- 2
- always
semi-spacing:
- 2
- before: false
after: true
sort-vars: 0
space-after-keywords:
- 2
- always
space-before-blocks:
- 2
- always
space-before-function-paren: 0
space-in-parens:
- 2
- never
space-infix-ops: 2
space-return-throw-case: 2
space-unary-ops:
- 2
- words: true
nonwords: false
spaced-comment:
- 1
- always
- exceptions:
- "*"
wrap-regex: 0
# ECMAScript 6
arrow-parens: 0
arrow-spacing: 2
constructor-super: 2
generator-star-spacing: 0
no-class-assign: 2
no-const-assign: 2
no-dupe-class-members: 2
no-this-before-super: 2
no-var: 2
object-shorthand: 0
prefer-arrow-callback: 0
prefer-const: 2
prefer-spread: 1
prefer-reflect: 0 # todo
prefer-template: 0
require-yield: 1
# Legacy
max-depth: 0 # ?
max-len:
- 1
- 100
- 4
- ignoreComments: true
ignoreUrls: true
# ignorePattern: "^\\s*var\\s.+=\\s*require\\s*\\(" todo https://github.com/eslint/eslint/blob/master/docs/rules/max-len.md
max-params:
- 1
- 4
max-statements: 0 # ?
no-bitwise: 2
no-plusplus: 0
# Babel
babel/object-shorthand:
- 1
- always
babel/generator-star-spacing:
- 2
- after
# React
react/display-name: 2
react/jsx-boolean-value: 2
react/jsx-no-duplicate-props: 2
react/jsx-no-undef: 2
react/jsx-quotes:
- 2
- single
react/jsx-sort-prop-types: 0
react/jsx-sort-props: 0
react/jsx-uses-react: 2
react/jsx-uses-vars: 2
react/no-danger: 1
react/no-did-mount-set-state: 2
react/no-did-update-set-state: 2
react/no-multi-comp: 2
react/no-unknown-property: 1
react/prop-types: 0
react/react-in-jsx-scope: 2
react/require-extension: 0
react/self-closing-comp: 2
react/sort-comp: 1
react/wrap-multilines: 2