eslintの各configの違い

eslintのeslint:recommendedとgoogleとairbnbとstandardの違い
===

ありそうで無かったeslintのconfig比較表です。  

2017/8/3現在、下記バージョンでの調査となっています。
- eslint: 4.3.0
- eslint-config-google: 0.9.1
- eslint-config-airbnb-base: 11.3.1
- eslint-config-standard: 10.2.1

## Possible Errors
| rule | eslint:<br>recommended | google | airbnb | standard |
|:--|:--|:--|:--|:--|
| for-direction | off |  | off |  |
| getter-return | off |  | ['off', { allowImplicit: true |  |
| no-await-in-loop | off |  | error |  |
| no-compare-neg-zero | error |  | off | error |
| no-cond-assign | error | 0 | ['error', 'always'] | error |
| no-console | error |  | warn |  |
| no-constant-condition | error |  | warn | ["error", { "checkLoops": false }] |
| no-control-regex | error |  | error | error |
| no-debugger | error |  | error | error |
| no-dupe-args | error |  | error | error |
| no-dupe-keys | error |  | error | error |
| no-duplicate-case | error |  | error | error |
| no-empty | error |  | error |  |
| no-empty-character-class | error |  | error | error |
| no-ex-assign | error |  | error | error |
| no-extra-boolean-cast | error |  | error | error |
| no-extra-parens | off |  |  ['off', 'all', {<br>&nbsp;&nbsp;conditionalAssign: true,<br>&nbsp;&nbsp;nestedBinaryExpressions: false,<br>&nbsp;&nbsp;returnAssign: false,<br>&nbsp;&nbsp;ignoreJSX: 'all', <br>&nbsp;&nbsp;enforceForArrowConditionals: false,<br>}] | ["error", "functions"] |
| no-extra-semi | error |  | error |  |
| no-func-assign | error |  | error | error |
| no-inner-declarations | error |  | error | ["error", "functions"] |
| no-invalid-regexp | error |  | error | error |
| no-irregular-whitespace | error | 2 | error | error |
| no-obj-calls | error |  | error | error |
| no-prototype-builtins | off |  | error |  |
| no-regex-spaces | error |  | error | error |
| no-sparse-arrays |eror |  | error | error |
| no-template-curly-in-string | off |  | error | error |
| no-unexpected-multiline | error | 2 | error | error |
| no-unreachable | error |  | error | error |
| no-unsafe-finally | error |  | error | error |
| no-unsafe-negation | error |  | error | error |
| use-isnan | error |  | error | error |
| valid-jsdoc | off | [2, {<br>&nbsp;&nbsp;requireParamDescription: false,<br>&nbsp;&nbsp;requireReturnDescription: false,<br>&nbsp;&nbsp;requireReturn: false,<br>&nbsp;&nbsp;prefer: {returns: 'return'},<br>}] | off |  |
| valid-typeof | error |  | ['error', { requireStringLiterals: true }] | ["error", { "requireStringLiterals": true }] |

## Best Practices
| rule | eslint:<br>recommended | google | airbnb | standard |
|:--|:--|:--|:--|:--|
| accessor-pairs | off |  | off | error |
| array-callback-return | off |  | error |  |
| block-scoped-var | off |  | error |  |
| class-methods-use-this | off |  | ['error', {<br>&nbsp;&nbsp;exceptMethods: [],<br>}] |  |
| complexity | off |  | ['off', 11] |  |
| consistent-return | off |  | error |  |
| curly | off | [2, 'multi-line'] | ['error', 'multi-line'] | ["error", "multi-line"] |
| default-case | off |  | ['error', { commentPattern: '^no default$' }] |  |
| dot-location | off |  | ['error', 'property'] | ["error", "property"] |
| dot-notation | off |  | ['error', { allowKeywords: true }] |  |
| eqeqeq | off |  | ['error', 'always', { null: 'ignore' }] | ["error", "always", { "null": "ignore" }] |
| guard-for-in | off | 2 | error |  |
| no-alert | off |  | warn |  |
| no-caller | off | 2 | error | error |
| no-case-declarations | error |  | error |  |
| no-div-regex | off |  | off |  |
| no-else-return | off |  | error |  |
| no-empty-function | off |  |  ['error', {<br>&nbsp;&nbsp;allow: [<br>&nbsp;&nbsp;&nbsp;&nbsp;'arrowFunctions',<br>&nbsp;&nbsp;&nbsp;&nbsp;'functions',<br>&nbsp;&nbsp;&nbsp;&nbsp;'methods',<br>&nbsp;&nbsp;]<br>}] |  |
| no-empty-pattern | error |  | error | error |
| no-eq-null | off |  | off |  |
| no-eval | off |  | error | error |
| no-extend-native | off | 2 | error | error |
| no-extra-bind | off | 2 | error | error |
| no-extra-label | off |  | error |  |
| no-fallthrough | error |  | error | error |
| no-floating-decimal | off |  | error | error |
| no-global-assign | error |  | ['error', { exceptions: [] }] | error |
| no-implicit-coercion | off |  | ['off', {<br>&nbsp;&nbsp;boolean: false,<br>&nbsp;&nbsp;number: true,<br>&nbsp;&nbsp;string: true,<br>&nbsp;&nbsp;allow: [],<br>}] |  |
| no-implicit-globals | off |  | off |  |
| no-implied-eval | off |  | error | error |
| no-invalid-this | off | 2 | off |  |
| no-iterator | off |  | error | error |
| no-labels | off |  | ['error', { allowLoop: false, allowSwitch: false }] | ["error", { "allowLoop": false, "allowSwitch": false }] |
| no-lone-blocks | off |  | error | error |
| no-loop-func | off |  | error |  |
| no-magic-numbers | off |  | ['off', {<br>&nbsp;&nbsp;ignore: [],<br>&nbsp;&nbsp;ignoreArrayIndexes: true,<br>&nbsp;&nbsp;enforceConst: true,<br>&nbsp;&nbsp;detectObjects: false,<br>}] |  |
| no-multi-spaces | off | 2 |  ['error', {<br>}] | error |
| no-multi-str | off | 2 | error | error |
| no-new  | off |  | error | error |
| no-new-func | off |  | error | error |
| no-new-wrappers | off | 2 | error | error |
| no-octal | error |  | error | error |
| no-octal-escape | off |  | error | error |
| no-param-reassign | off |  | ['error', {<br>&nbsp;&nbsp;props: true,<br>&nbsp;&nbsp;ignorePropertyModificationsFor: [<br>&nbsp;&nbsp;&nbsp;&nbsp;'acc', <br>&nbsp;&nbsp;&nbsp;&nbsp;'e', <br>&nbsp;&nbsp;&nbsp;&nbsp;'ctx', <br>&nbsp;&nbsp;&nbsp;&nbsp;'req', <br>&nbsp;&nbsp;&nbsp;&nbsp;'request', <br>&nbsp;&nbsp;&nbsp;&nbsp;'res', <br>&nbsp;&nbsp;&nbsp;&nbsp;'response', <br>&nbsp;&nbsp;&nbsp;&nbsp;'$scope', <br>&nbsp;&nbsp;]<br>}] |  |
| no-proto | off |  | error | error |
| no-redeclare | error |  | error | error |
| no-restricted-properties | off |  | ['error', {<br>&nbsp;&nbsp;object: 'arguments',<br>&nbsp;&nbsp;property: 'callee',<br>&nbsp;&nbsp;message: 'arguments.callee is deprecated',<br>}, {<br>&nbsp;&nbsp;property: '\_\_defineGetter\_\_',<br>&nbsp;&nbsp;message: 'Please use Object.defineProperty instead.',<br>}, {<br>&nbsp;&nbsp;property: '\_\_defineSetter\_\_',<br>&nbsp;&nbsp;message: 'Please use Object.defineProperty instead.',<br>}, {<br>&nbsp;&nbsp;object: 'Math',<br>&nbsp;&nbsp;property: 'pow',<br>&nbsp;&nbsp;message: 'Use the exponentiation operator (**) instead.',<br>}] |  |
| no-return-assign | off |  | ['error', 'always'] | ["error", "except-parens"] |
| no-return-await | off |  | error | error |
| no-script-url | off |  | error |  |
| no-self-assign | error |  | error | error |
| no-self-compare | off |  | error | error |
| no-sequences | off |  | error | error |
| no-throw-literal | off | 2 | error | error |
| no-unmodified-loop-condition | off |  | off | error |
| no-unused-expressions | off |  | ['error', {<br>&nbsp;&nbsp;allowShortCircuit: false,<br>&nbsp;&nbsp;allowTernary: false,<br>&nbsp;&nbsp;allowTaggedTemplates: false,<br>}] | ["error", { "allowShortCircuit": true, "allowTernary": true, "allowTaggedTemplates": true }] |
| no-unused-labels | error |  | error |  |
| no-useless-call | off |  | off | error |
| no-useless-concat | off |  | error |  |
| no-useless-escape | error |  | error | error |
| no-useless-return | off |  | eror | error |
| no-void | off |  | error |  |
| no-warning-comments | off |  | ['off', { terms: ['todo', 'fixme', 'xxx'], location: 'start' }] |  |
| no-with | off | 2 | error | error |
| prefer-promise-reject-errors | off |  | ['off', { allowEmptyReject: true }] | error |
| radix | off |  | error |  |
| require-await | off |  | off |  |
| vars-on-top | off |  | error |  |
| wrap-iife | off |  | ['error', 'outside', { functionPrototypeMethods: false }] | ["error", "any", { "functionPrototypeMethods": true }] |
| yoda | off |  | error | ["error", "never"] |


## Strict Mode
| rule | eslint:<br>recommended | google | airbnb | standard |
|:--|:--|:--|:--|:--|
| strict | off |  | ['error', 'never'] |  |

## Variables
| rule | eslint:<br>recommended | google | airbnb | standard |
|:--|:--|:--|:--|:--|
| init-declarations | off |  | off |  |
| no-catch-shadow | off |  | off |  |
| no-delete-var | error |  | error | errorf |
| no-label-var | off |  | error | error |
| no-restricted-globals | off |  | ['off'].concat(restrictedGlobals) |  |
| no-shadow | off |  | error |  |
| no-shadow-restricted-names | off |  | error | error |
| no-undef | error |  | error | error |
| no-undef-init | off |  | error | error |
| no-undefined | off |  | off |  |
| no-unused-vars | error | [2, {args: 'none'}] | ['error', { vars: 'all', args: 'after-used', ignoreRestSiblings: true }] | ["error", { "vars": "all", "args": "none", "ignoreRestSiblings": true }] |
| no-use-before-define | off |  | ['error', { functions: true, classes: true, variables: true }] | ["error", { "functions": false, "classes": false, "variables": false }] |

## Node.js and CommonJS
| rule | eslint:<br>recommended | google | airbnb | standard |
|:--|:--|:--|:--|:--|
| cllback-return | off |  | off |  |
| global-require | off |  | error |  |
| handle-callback-err | off |  | off | ["error", "^(err|error)$" ] |
| no-buffer-constructor | off |  | off |  |
| no-mixed-requires | off |  | ['off', false] |  |
| no-new-require | off |  | error | error |
| no-path-concat | off |  | error | error |
| no-process-env | off |  | off |  |
| no-process-exit | off |  | off |  |
| no-restricted-modules | off |  | off |  |
| no-sync | off |  | off |  |


## Stylistic Issues
| rule | eslint:<br>recommended | google | airbnb | standard |
|:--|:--|:--|:--|:--|
| array-bracket-newline | off | 0 | ['off', { multiline: true, minItems: 3 }] |  |
| array-bracket-spacing | off | [2, 'never'] | ['error', 'never'] |  |
| array-element-newline | off | 0 | ['off', { multiline: true, minItems: 3 }] |  |
| block-spacing | off | [2, 'never'] | ['error', 'always'] | ["error", "always"] |
| brace-style | off | 2 | ['error', '1tbs', { allowSingleLine: true }] | ["error", "1tbs", { "allowSingleLine": true }] |
| camelcase | off | [2, {properties: 'never'}] | ['error', { properties: 'never' }], | ["error", { "properties": "never" }] |
| capitalized-comments | off |  | ['off', 'never', {<br>&nbsp;&nbsp;line: {<br>&nbsp;&nbsp;&nbsp;&nbsp;ignorePattern: '.\*',<br>&nbsp;&nbsp;&nbsp;&nbsp;ignoreInlineComments: true,<br>&nbsp;&nbsp;&nbsp;&nbsp;ignoreConsecutiveComments: true,<br>&nbsp;&nbsp;},<br>&nbsp;&nbsp;block: {<br>&nbsp;&nbsp;&nbsp;&nbsp;ignorePattern: '.\*',<br>&nbsp;&nbsp;&nbsp;&nbsp;ignoreInlineComments: true,<br>&nbsp;&nbsp;&nbsp;&nbsp;ignoreConsecutiveComments: true,<br>&nbsp;&nbsp;},<br>}] |  |
| comma-dangle | off | [2, 'always-multiline'] | ['error', {<br>&nbsp;&nbsp;arrays: 'always-multiline',<br>&nbsp;&nbsp;objects: 'always-multiline',<br>&nbsp;&nbsp;imports: 'always-multiline',<br>&nbsp;&nbsp;exports: 'always-multiline',<br>&nbsp;&nbsp;functions: 'always-multiline',<br>}] | ["error", {<br>&nbsp;&nbsp;"arrays": "never",<br>&nbsp;&nbsp;"objects": "never",<br>&nbsp;&nbsp;"imports": "never",<br>&nbsp;&nbsp;"exports": "never",<br>&nbsp;&nbsp;"functions": "never"<br>}] |
| comma-spacing | off | 2 | ['error', { before: false, after: true }] | ["error", { "before": false, "after": true }] |
| comma-style | off | 2 | ['error', 'last'] | ["error", "last"] |
| computed-property-spacing | off | 2 | ['error', 'never'] |  |
| consistent-this | off |  | off |  |
| eol-last | off | 2 | ['error', 'always'] | error |
| func-call-spacing | off | 2 | ['error', 'never'] | ["error", "never"] |
| func-name-matching | off |  | ['off', 'always', {<br>&nbsp;&nbsp;includeCommonJSModuleExports: false<br>}] |  |
| func-names | off |  | warn |  |
| func-style | off |  | ['off', 'expression'] |  |
| id-blacklist | off |  | off |  |
| id-length | off |  | off |  |
| id-match | off |  | off |  |
| indent | off |  | ['error', 2, {<br>&nbsp;&nbsp;SwitchCase: 1,<br>&nbsp;&nbsp;VariableDeclarator: 1,<br>&nbsp;&nbsp;outerIIFEBody: 1,<br>&nbsp;&nbsp;FunctionDeclaration: {<br>&nbsp;&nbsp;&nbsp;&nbsp;parameters: 1,<br>&nbsp;&nbsp;&nbsp;&nbsp;body: 1<br>&nbsp;&nbsp;},<br>&nbsp;&nbsp;FunctionExpression: {<br>&nbsp;&nbsp;&nbsp;&nbsp;parameters: 1,<br>&nbsp;&nbsp;&nbsp;&nbsp;body: 1<br>&nbsp;&nbsp;}<br>}] | ["error", 2, { "SwitchCase": 1 }] |
| jsx-quotes | off |  | ['off', 'prefer-double'] |  |
| key-spacing | off | 2 | ['error', { beforeColon: false, afterColon: true }] | ["error", { "beforeColon": false, "afterColon": true }] |
| keyword-spacing | off | 2 | ['error', {<br>&nbsp;&nbsp;before: true,<br>&nbsp;&nbsp;after: true,<br>&nbsp;&nbsp;overrides: {<br>&nbsp;&nbsp;&nbsp;&nbsp;return: { after: true },<br>&nbsp;&nbsp;&nbsp;&nbsp;throw: { after: true },<br>&nbsp;&nbsp;&nbsp;&nbsp;case: { after: true }<br>&nbsp;&nbsp;}<br>}] | ["error", { "before": true, "after": true }] |
| line-comment-position | off |  | ['off', {<br>&nbsp;&nbsp;position: 'above',<br>&nbsp;&nbsp;ignorePattern: '',<br>&nbsp;&nbsp;applyDefaultPatterns: true,<br>}] |  |
| linebreak-style | off | 2 | ['error', 'unix'] |  |
| lines-around-comment | off |  | off |  |
| max-depth | off |  | ['off', 4] |  |
| max-len | off | [2, {<br>&nbsp;&nbsp;code: 80,<br>&nbsp;&nbsp;tabWidth: 2,<br>&nbsp;&nbsp;ignoreUrls: true,<br>&nbsp;&nbsp;ignorePattern: '^goog\.(module&#124;require)',<br>}] | ['error', 100, 2, {<br>&nbsp;&nbsp;ignoreUrls: true,<br>&nbsp;&nbsp;ignoreComments: false,<br>&nbsp;&nbsp;ignoreRegExpLiterals: true,<br>&nbsp;&nbsp;ignoreStrings: true,<br>&nbsp;&nbsp;ignoreTemplateLiterals: true,<br>}] |  |
| max-lines | off |  | ['off', {<br>&nbsp;&nbsp;max: 300,<br>&nbsp;&nbsp;skipBlankLines: true,<br>&nbsp;&nbsp;skipComments: true<br>}] |  |
| max-nested-callbacks | off |  | off |  |
| max-params | off |  | ['off', 3] |  |
| max-statements | off |  | ['off', 10] |  |
| max-statements-per-line | off |  | ['off', { max: 1 }] |  |
| multiline-ternary | off |  | ['off', 'never'] |  |
| new-cap | off | 2 | ['error', {<br>&nbsp;&nbsp;newIsCap: true,<br>&nbsp;&nbsp;newIsCapExceptions: [],<br>&nbsp;&nbsp;capIsNew: false,<br>&nbsp;&nbsp;capIsNewExceptions: ['Immutable.Map', 'Immutable.Set', 'Immutable.List'],<br>}] | ["error", { "newIsCap": true, "capIsNew": false }] |
| new-parens | off |  | error | error |
| newline-per-chained-call | off |  | ['error', { ignoreChainWithDepth: 4 }] |  |
| no-array-constructor | off | 2 | error | error |
| no-bitwise | off |  | error |  |
| no-continue | off |  | error |  |
| no-inline-comments | off |  | off |  |
| no-lonely-if | off |  | error |  |
| no-mixed-operators | off |  | ['error', {<br>&nbsp;&nbsp;groups: [<br>&nbsp;&nbsp;&nbsp;&nbsp;['+', '-', '\*', '/', '%', '\*\*'],<br>&nbsp;&nbsp;&nbsp;&nbsp;['&', '&#124;', '^', '~', '<<', '>>', '>>>'],<br>&nbsp;&nbsp;&nbsp;&nbsp;['==', '!=', '===', '!==', '>', '>=', '<', '<='],<br>&nbsp;&nbsp;&nbsp;&nbsp;['&&', '&#124;&#124;'],<br>&nbsp;&nbsp;&nbsp;&nbsp;['in', 'instanceof']<br>&nbsp;&nbsp;],<br>&nbsp;&nbsp;allowSamePrecedence: false<br>}] | ["error", {<br>&nbsp;&nbsp;"groups": [<br>&nbsp;&nbsp;&nbsp;&nbsp;["==", "!=", "===", "!==", ">", ">=", "<", "<="],<br>&nbsp;&nbsp;&nbsp;&nbsp;["&&", "||"],<br>&nbsp;&nbsp;&nbsp;&nbsp;["in", "instanceof"]<br>&nbsp;&nbsp;],<br>&nbsp;&nbsp;"allowSamePrecedence": true<br>}] |
| no-mixed-spaces-and-tabs | error | 2 | error | error |
| no-multi-assign | off |  | error |  |
| no-multiple-empty-lines | off | [2, {max: 2}] | ['error', { max: 2, maxEOF: 1 }] | ["error", { "max": 1, "maxEOF": 0 }] |
| no-negated-condition | off |  | off |  |
| no-nested-ternary | off |  | error |  |
| no-new-object | off | 2 | error | error |
| no-plusplus | off |  | error |  |
| no-restricted-syntax | off |  | [<br>&nbsp;&nbsp;'error',<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;selector: 'ForInStatement',<br>&nbsp;&nbsp;&nbsp;&nbsp;message: 'for..in loops iterate over the entire prototype chain, which is virtually never what you want. Use Object.{keys,values,entries}, and iterate over the resulting array.',<br>&nbsp;&nbsp;},<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;selector: 'ForOfStatement',<br>&nbsp;&nbsp;&nbsp;&nbsp;message: 'iterators/generators require regenerator-runtime, which is too heavyweight for this guide to allow them. Separately, loops should be avoided in favor of array iterations.',<br>&nbsp;&nbsp;},<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;selector: 'LabeledStatement',<br>&nbsp;&nbsp;&nbsp;&nbsp;message: 'Labels are a form of GOTO; using them makes code confusing and hard to maintain and understand.',<br>&nbsp;&nbsp;},<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;selector: 'WithStatement',<br>&nbsp;&nbsp;&nbsp;&nbsp;message: '`with` is disallowed in strict mode because it makes code impossible to predict and optimize.',<br>&nbsp;&nbsp;},<br>] |  |
| no-tabs | off | 2 | error | error |
| no-ternary | off |  | off |  |
| no-trailing-spaces | off | 2 | ['error', {<br>&nbsp;&nbsp;skipBlankLines: false,<br>}] | error |
| no-underscore-dangle | off |  | ['error', {<br>&nbsp;&nbsp;allow: [],<br>&nbsp;&nbsp;allowAfterThis: false,<br>&nbsp;&nbsp;allowAfterSuper: false,<br>}] |  |
| no-unneeded-ternary | off |  | ['error', { defaultAssignment: false }] | ["error", { "defaultAssignment": false }] |
| no-whitespace-before-property | off |  | error | error |
| nonblock-statement-body-position | off |  | off |  |
| object-curly-newline | off |  | ['off', {<br>&nbsp;&nbsp;ObjectExpression: { minProperties: 3, multiline: true, consistent: true },<br>&nbsp;&nbsp;ObjectPattern: { minProperties: 3, multiline: true, consistent: true }<br>}] |  |
| object-curly-spacing | off | 2 | ['error', 'always'] |  |
| object-property-newline | off |  | ['error', {<br>&nbsp;&nbsp;allowMultiplePropertiesPerLine: true,<br>}] | ["error", { "allowMultiplePropertiesPerLine": true }] |
| one-var | off | [2, {<br>&nbsp;&nbsp;var: 'never',<br>&nbsp;&nbsp;let: 'never',<br>&nbsp;&nbsp;const: 'never',<br>}] | ['error', 'never'] | ["error", { "initialized": "never" }] |
| one-var-declaration-per-line | off |  | ['error', 'always'] |  |
| operator-assignment | off |  | ['error', 'always'] |  |
| operator-linebreak | off |  | off | ["error", "after", { "overrides": { "?": "before", ":": "before" } }] |
| padded-blocks | off | [2, 'never'] | ['error', 'never'] | ["error", { "blocks": "never", "switches": "never", "classes": "never" }] |
| padding-line-between-statements | off |  | off |  |
| quote-props | off | [2, 'consistent'] | ['error', 'as-needed', { keywords: false, unnecessary: true, numbers: false }] |  |
| quotes | off | [2, 'single', {allowTemplateLiterals: true}] | ['error', 'single', { avoidEscape: true }] | ["error", "single", { "avoidEscape": true, "allowTemplateLiterals": true }] |
| require-jsdoc | off | [2, {<br>&nbsp;&nbsp;require: {<br>&nbsp;&nbsp;&nbsp;&nbsp;FunctionDeclaration: true,<br>&nbsp;&nbsp;&nbsp;&nbsp;MethodDefinition: true,<br>&nbsp;&nbsp;&nbsp;&nbsp;ClassDeclaration: true,<br>&nbsp;&nbsp;},<br>}] | off |  |
| semi | off | 2 | ['error', 'always'] |  ["error", "never"] |
| semi-spacing | off | 2 | ['error', { before: false, after: true }] | ["error", { "before": false, "after": true }] |
| semi-style | off |  | ['off', 'last'] |  |
| sort-keys | off |  | ['off', 'asc', { caseSensitive: false, natural: true }] |  |
| sort-vars | off |  | off |  |
| space-before-blocks | off | 2 | error | ["error", "always"] |
| space-before-function-paren | off | [2, {<br>&nbsp;&nbsp;asyncArrow: 'always',<br>&nbsp;&nbsp;anonymous: 'never',<br>&nbsp;&nbsp;named: 'never',<br>}] | ['error', {<br>&nbsp;&nbsp;anonymous: 'always',<br>&nbsp;&nbsp;named: 'never',<br>&nbsp;&nbsp;asyncArrow: 'always'<br>}] | ["error", "always"] |
| space-in-parens | off |  | ['error', 'never'] | ["error", "never"] |
| space-infix-ops | off |  | error | error |
| space-unary-ops | off |  | ['error', {<br>&nbsp;&nbsp;words: true,<br>&nbsp;&nbsp;nonwords: false,<br>&nbsp;&nbsp;overrides: {<br>&nbsp;&nbsp;},<br>}] | ["error", { "words": true, "nonwords": false }] |
| spaced-comment | off | [2, 'always'] | sp;&nbsp;},<br>&nbsp;&nbsp;block: {<br>&nbsp;&nbsp;&nbsp;&nbsp;exceptions: ['-', '+'],<br>&nbsp;&nbsp;&nbsp;&nbsp;markers: ['=', '!'], // space here to support sprockets directives<br>&nbsp;&nbsp;&nbsp;&nbsp;balanced: true,<br>&nbsp;&nbsp;}<br>}] | ["error", "always", {<br>&nbsp;&nbsp;"line": { "markers": ["*package", "!", "/", ","] },<br>&nbsp;&nbsp;"block": { "balanced": true, "markers": ["*package", "!", ",", ":", "::", "flow-include"], "exceptions": ["*"] }<br>}] |
| switch-colon-spacing | off | 2 | ['off', { after: true, before: false }] |  |
| template-tag-spacing | off |  | ['off', 'never'] | ["error", "never"] |
| unicode-bom | off |  | ['error', 'never'] | ["error", "never"] |
| wrap-regex | off |  | off |  |

## ECMAScript 6
| rule | eslint:<br>recommended | google | airbnb | standard |
|:--|:--|:--|:--|:--|
| arrow-body-style | off |  | ['error', 'as-needed', {<br>&nbsp;&nbsp;requireReturnForObjectLiteral: false,<br>}] |  |
| arrow-parens | off | [2, 'always'] | ['error', 'as-needed', {<br>&nbsp;&nbsp;requireForBlockBody: true,<br>}] |  |
| arrow-spacing | off |  | ['error', { before: true, after: true }] | ["error", { "before": true, "after": true }] |
| constructor-super | error | 2 | error | error |
| generator-star-spacing | off | [2, 'after'] | ['error', { before: false, after: true }] | ["error", { "before": true, "after": true }] |
| no-class-assign | error |  | error | error |
| no-confusing-arrow | off |  | ['error', {<br>&nbsp;&nbsp;allowParens: true,<br>}] |  |
| no-const-assign | error |  | error | error |
| no-dupe-class-members | error |  | error | error |
| no-duplicate-imports | off |  | off |  |
| no-new-symbol | error | 2 | error | error |
| no-restricted-imports | off |  | off |  |
| no-this-before-super | error | 2 | error | error |
| no-useless-computed-key | off |  | error | error |
| no-useless-constructor | off |  | error | error |
| no-useless-rename | off |  | ['error', {<br>&nbsp;&nbsp;ignoreDestructuring: false,<br>&nbsp;&nbsp;ignoreImport: false,<br>&nbsp;&nbsp;ignoreExport: false,<br>}] | error |
| no-var | off | 2 | error |  |
| object-shorthand | off |  | ['error', 'always', {<br>&nbsp;&nbsp;ignoreConstructors: false,<br>&nbsp;&nbsp;avoidQuotes: true,<br>}] |  |
| prefer-arrow-callback | off |  | ['error', {<br>&nbsp;&nbsp;allowNamedFunctions: false,<br>&nbsp;&nbsp;allowUnboundThis: true,<br>}] |  |
| prefer-const | off |  | ['error', {<br>&nbsp;&nbsp;destructuring: 'any',<br>&nbsp;&nbsp;ignoreReadBeforeAssign: true,<br>}] |  |
| prefer-destructuring | off |  | ['off', {<br>&nbsp;&nbsp;VariableDeclarator: {<br>&nbsp;&nbsp;&nbsp;&nbsp;array: false,<br>&nbsp;&nbsp;&nbsp;&nbsp;object: true,<br>&nbsp;&nbsp;},<br>&nbsp;&nbsp;AssignmentExpression: {<br>&nbsp;&nbsp;&nbsp;&nbsp;array: true,<br>&nbsp;&nbsp;&nbsp;&nbsp;object: true,<br>&nbsp;&nbsp;},<br>}, {<br>&nbsp;&nbsp;enforceForRenamedProperties: false,<br>}] |  |
| prefer-numeric-literals | off |  | error |  |
| prefer-rest-params | off | 2 | error |  |
| prefer-spread | off | 2 | error |  |
| prefer-template | off |  | error |  |
| require-yield | error |  | error |  |
| rest-spread-spacing | off | 2 | ['error', 'never'] | ["error", "never"] |
| sort-imports | off |  | ['off', {<br>&nbsp;&nbsp;ignoreCase: false,<br>&nbsp;&nbsp;ignoreMemberSort: false,<br>&nbsp;&nbsp;memberSyntaxSortOrder: ['none', 'all', 'multiple', 'single'],<br>}] |  |
| symbol-description | off |  | error | error |
| template-curly-spacing | off |  | error | ["error", "never"] |
| yield-star-spacing | off | [2, 'after'] | ['error', 'after'] | ["error", "both"] |

---

## 参考
- http://eslint.org/docs/rules/
- https://github.com/eslint/eslint
- https://www.npmjs.com/package/eslint-config-google
- https://www.npmjs.com/package/eslint-config-airbnb
- https://www.npmjs.com/package/eslint-config-standard