@amory/eslint-config
v2019.4.15-0
Published
Lint JavaScript code with @ptb's personal preferences
Downloads
617
Readme
- ESLint :properties: :header-args: :cache yes :comments no :mkdirp yes :padline yes :results silent :end: #+startup: showall hideblocks hidestars indent
** Table of Contents :TOC:
- [[#eslint][ESLint]]
- [[#setup][Setup]]
- [[#eslintignore][.eslintignore]]
- [[#eslintrcjs][.eslintrc.js]]
- [[#eslintrcjson][.eslintrc.json]]
- [[#vscodesettingsjson][.vscode/settings.json]]
- [[#packagejson][package.json]]
- [[#rules][Rules]]
- [[#possible-errors][Possible Errors]]
- [[#best-practices][Best Practices]]
- [[#strict-mode][Strict Mode]]
- [[#variables][Variables]]
- [[#nodejs-and-commonjs][Node.js and CommonJS]]
- [[#stylistic-issues][Stylistic Issues]]
- [[#ecmascript-6][ECMAScript 6]]
- [[#plugins][Plugins]]
- [[#eslint-plugin-compat][eslint-plugin-compat]]
- [[#eslint-plugin-flowtype][eslint-plugin-flowtype]]
- [[#eslint-plugin-fp][eslint-plugin-fp]]
- [[#eslint-plugin-graphql][eslint-plugin-graphql]]
- [[#eslint-plugin-import][eslint-plugin-import]]
- [[#eslint-plugin-json][eslint-plugin-json]]
- [[#eslint-plugin-jsx-a11y][eslint-plugin-jsx-a11y]]
- [[#eslint-plugin-promise][eslint-plugin-promise]]
- [[#eslint-plugin-react][eslint-plugin-react]]
- [[#eslint-plugin-standard][eslint-plugin-standard]]
- [[#setup][Setup]]
** Setup
*** [[https://eslint.org/docs/user-guide/configuring#ignoring-files-and-directories][.eslintignore]]
#+HTML: #+begin_src gitignore :noweb-ref ".eslintignore" :tangle ".eslintignore" !.eslintrc.js* !*.json node_modules/ #+end_src #+HTML:
*** [[https://eslint.org/docs/user-guide/configuring#configuration-file-formats][.eslintrc.js]]
#+HTML: #+begin_src js :noweb-ref ".eslintrc.js" :tangle ".eslintrc.js" module.exports = require ("./.eslintrc.json") #+end_src #+HTML:
*** [[https://eslint.org/docs/user-guide/configuring#configuration-file-formats][.eslintrc.json]]
#+HTML: #+begin_src json :noweb-ref ".eslintrc.json" :tangle ".eslintrc.json" { "env": { "browser": true, "es6": true, "node": true }, "extends": [ "./rules/possible-errors.json", "./rules/best-practices.json", "./rules/strict-mode.json", "./rules/variables.json", "./rules/nodejs-and-commonjs.json", "./rules/stylistic-issues.json", "./rules/ecmascript-6.json", "./plugins/plugin-compat.json", "./plugins/plugin-fp.json", "./plugins/plugin-graphql.json", "./plugins/plugin-import.json", "./plugins/plugin-json.json", "./plugins/plugin-jsx-a11y.json", "./plugins/plugin-promise.json", "./plugins/plugin-react.json", "./plugins/plugin-standard.json" ], "parser": "babel-eslint", "parserOptions": { "ecmaFeatures": { "impliedStrict": true, "jsx": true, "modules": true }, "ecmaVersion": 2018, "sourceType": "module" }, "settings": { "react": { "version": "detect" } } } #+end_src #+HTML:
*** [[https://code.visualstudio.com/docs/getstarted/settings][.vscode/settings.json]]
#+HTML: #+begin_src json :noweb-ref ".vscode/settings.json" :tangle ".vscode/settings.json" { "editor.formatOnType": true, "eslint.options": { "configFile": "node_modules/@amory/eslint-config/.eslintrc.json" }, "eslint.runtime": "/usr/local/node/shims/node" } #+end_src #+HTML:
*** [[https://docs.npmjs.com/creating-a-package-json-file][package.json]]
#+HTML: #+begin_src json :noweb-ref "package.json" :tangle "package.json" { "author": "Peter T Bosse II [email protected] (https://ptb.dev/)", "description": "Lint JavaScript code with @ptb's personal preferences", "devDependencies": { "babel-eslint": "10.0.1", "eslint": "5.16.0", "eslint-plugin-compat": "3.1.1", "eslint-plugin-flowtype": "3.6.1", "eslint-plugin-flowtype-comment": "1.0.0", "eslint-plugin-fp": "2.3.0", "eslint-plugin-graphql": "3.0.3", "eslint-plugin-import": "2.17.1", "eslint-plugin-json": "1.4.0", "eslint-plugin-jsx-a11y": "6.2.1", "eslint-plugin-promise": "4.1.1", "eslint-plugin-react": "7.12.4", "eslint-plugin-standard": "4.0.0", "graphql": "14.2.1" }, "eslintConfig": { "extends": [ "./.eslintrc.json" ] }, "keywords": [ "eslint", "eslintconfig" ], "license": "(Apache-2.0 OR MIT)", "main": ".eslintrc.js", "name": "@amory/eslint-config", "publishConfig": { "access": "public" }, "repository": "https://github.com/ptb/amory/tree/master/eslint", "scripts": { "lint": "f () { eslint src || exit 0; }; f", "lint:file": "f () { eslint --fix "${1}" || exit 0; }; f", "lint:fix": "f () { eslint --fix src || exit 0; }; f", "lint:flow": "f () { eslint --plugin flowtype-comment src || exit 0; }; f" }, "version": "2019.4.15-0" } #+end_src #+HTML:
** Rules
*** [[https://eslint.org/docs/rules/#possible-errors][Possible Errors]]
#+HTML: #+begin_src json :noweb-ref "rules/possible-errors.json" :tangle "rules/possible-errors.json" { "rules": { "for-direction": "error", "getter-return": [ "error", { "allowImplicit": true } ], "no-async-promise-executor": "warn", "no-await-in-loop": "warn", "no-compare-neg-zero": "error", "no-cond-assign": "error", "no-console": [ "error", { "allow": [ "error", "info", "warn" ] } ], "no-constant-condition": "error", "no-control-regex": "error", "no-debugger": "error", "no-dupe-args": "error", "no-dupe-keys": "error", "no-duplicate-case": "error", "no-empty": [ "error", { "allowEmptyCatch": true } ], "no-empty-character-class": "error", "no-ex-assign": "error", "no-extra-boolean-cast": "error", "no-extra-parens": [ "warn", "all", { "enforceForArrowConditionals": false, "ignoreJSX": "all", "returnAssign": false } ], "no-extra-semi": "error", "no-func-assign": "error", "no-inner-declarations": [ "error", "both" ], "no-invalid-regexp": "error", "no-irregular-whitespace": [ "error", { "skipRegExps": true, "skipStrings": true, "skipTemplates": true } ], "no-misleading-character-class": "warn", "no-obj-calls": "error", "no-prototype-builtins": "warn", "no-regex-spaces": "error", "no-sparse-arrays": "error", "no-template-curly-in-string": "warn", "no-unexpected-multiline": "error", "no-unreachable": "error", "no-unsafe-finally": "error", "no-unsafe-negation": "error", "require-atomic-updates": "warn", "use-isnan": "error", "valid-jsdoc": [ "off", { "prefer": { "arg": "param", "argument": "param", "class": "constructor", "return": "returns", "virtual": "abstract" }, "preferType": { "Boolean": "boolean", "Number": "number", "String": "string", "object": "Object" }, "requireParamDescription": false, "requireParamType": true, "requireReturn": true, "requireReturnDescription": false, "requireReturnType": true } ], "valid-typeof": "error" } } #+end_src #+HTML:
*** [[https://eslint.org/docs/rules/#best-practices][Best Practices]]
#+HTML: #+begin_src json :noweb-ref "rules/best-practices.json" :tangle "rules/best-practices.json" { "rules": { "accessor-pairs": "warn", "array-callback-return": [ "warn", { "allowImplicit": true } ], "block-scoped-var": "warn", "class-methods-use-this": [ "warn", { "exceptMethods": [ "render" ] } ], "complexity": "warn", "consistent-return": "warn", "curly": [ "error", "all" ], "default-case": "off", "dot-location": [ "error", "property" ], "dot-notation": [ "error", { "allowKeywords": true } ], "eqeqeq": [ "error", "smart" ], "guard-for-in": "warn", "max-classes-per-file": "warn", "no-alert": "error", "no-caller": "error", "no-case-declarations": "error", "no-div-regex": "error", "no-else-return": [ "warn", { "allowElseIf": true } ], "no-empty-function": "warn", "no-empty-pattern": "warn", "no-eq-null": "off", "no-eval": "error", "no-extend-native": "error", "no-extra-bind": "error", "no-extra-label": "error", "no-fallthrough": "warn", "no-floating-decimal": "off", "no-global-assign": "error", "no-implicit-coercion": "warn", "no-implicit-globals": "error", "no-implied-eval": "warn", "no-invalid-this": "warn", "no-iterator": "warn", "no-labels": [ "warn", { "allowLoop": false, "allowSwitch": false } ], "no-lone-blocks": "error", "no-loop-func": "error", "no-magic-numbers": "off", "no-multi-spaces": [ "warn", { "exceptions": { "ImportDeclaration": true }, "ignoreEOLComments": true } ], "no-multi-str": "error", "no-new": "warn", "no-new-func": "warn", "no-new-wrappers": "warn", "no-octal": "error", "no-octal-escape": "error", "no-param-reassign": "warn", "no-proto": "error", "no-redeclare": [ "error", { "builtinGlobals": true } ], "no-restricted-properties": "off", "no-return-assign": [ "error", "except-parens" ], "no-return-await": "warn", "no-script-url": "error", "no-self-assign": "warn", "no-self-compare": "error", "no-sequences": "error", "no-throw-literal": "error", "no-unmodified-loop-condition": "error", "no-unused-expressions": [ "warn", { "allowShortCircuit": true, "allowTernary": true } ], "no-unused-labels": "warn", "no-useless-call": "warn", "no-useless-concat": "warn", "no-useless-escape": "warn", "no-useless-return": "warn", "no-void": "warn", "no-warning-comments": "warn", "no-with": "warn", "prefer-promise-reject-errors": "warn", "radix": [ "warn", "always" ], "require-await": "warn", "require-unicode-regexp": "warn", "vars-on-top": "warn", "wrap-iife": [ "warn", "any" ], "yoda": [ "warn", "never" ] } } #+end_src #+HTML:
*** [[https://eslint.org/docs/rules/#strict-mode][Strict Mode]]
#+HTML: #+begin_src json :noweb-ref "rules/strict-mode.json" :tangle "rules/strict-mode.json" { "rules": { "strict": [ "warn", "safe" ] } } #+end_src #+HTML:
*** [[https://eslint.org/docs/rules/#variables][Variables]]
#+HTML: #+begin_src json :noweb-ref "rules/variables.json" :tangle "rules/variables.json" { "rules": { "init-declarations": "off", "no-delete-var": "warn", "no-label-var": "warn", "no-restricted-globals": "off", "no-shadow": [ "warn", { "allow": [ "CSSTransition", "location" ], "builtinGlobals": true, "hoist": "all" } ], "no-shadow-restricted-names": "warn", "no-undef": "warn", "no-undef-init": "warn", "no-undefined": "warn", "no-unused-vars": [ "warn", { "args": "all", "argsIgnorePattern": "^_", "vars": "all" } ], "no-use-before-define": "warn" } } #+end_src #+HTML:
*** [[https://eslint.org/docs/rules/#nodejs-and-commonjs][Node.js and CommonJS]]
#+HTML: #+begin_src json :noweb-ref "rules/nodejs-and-commonjs.json" :tangle "rules/nodejs-and-commonjs.json" { "rules": { "callback-return": "warn", "global-require": "warn", "handle-callback-err": [ "warn", "^(err|error)$" ], "no-buffer-constructor": "warn", "no-mixed-requires": [ "warn", { "allowCall": true, "grouping": true } ], "no-new-require": "warn", "no-path-concat": "warn", "no-process-env": "warn", "no-process-exit": "warn", "no-restricted-modules": "off", "no-sync": "off" } } #+end_src #+HTML:
*** [[https://eslint.org/docs/rules/#stylistic-issues][Stylistic Issues]]
#+HTML: #+begin_src json :noweb-ref "rules/stylistic-issues.json" :tangle "rules/stylistic-issues.json" { "rules": { "array-bracket-newline": [ "warn", "consistent" ], "array-bracket-spacing": [ "warn", "never" ], "array-element-newline": "off", "block-spacing": [ "warn", "always" ], "brace-style": [ "warn", "1tbs", { "allowSingleLine": true } ], "camelcase": [ "warn", { "properties": "always" } ], "capitalized-comments": "off", "comma-dangle": [ "warn", "never" ], "comma-spacing": [ "warn", { "after": true, "before": false } ], "comma-style": [ "warn", "last" ], "computed-property-spacing": [ "warn", "never" ], "consistent-this": [ "warn", "self" ], "eol-last": [ "warn", "unix" ], "func-call-spacing": [ "warn", "always" ], "func-name-matching": "warn", "func-names": "off", "func-style": [ "warn", "expression" ], "function-paren-newline": [ "warn", "consistent" ], "id-blacklist": "off", "id-length": "off", "id-match": "off", "implicit-arrow-linebreak": "off", "indent": [ "warn", 2, { "SwitchCase": 1, "VariableDeclarator": 1 } ], "jsx-quotes": [ "warn", "prefer-double" ], "key-spacing": [ "warn", { "afterColon": true, "beforeColon": false, "mode": "strict" } ], "keyword-spacing": [ "warn", { "after": true, "before": true } ], "line-comment-position": [ "warn", { "position": "above" } ], "linebreak-style": [ "warn", "unix" ], "lines-around-comment": [ "warn", { "afterBlockComment": false, "afterLineComment": false, "allowArrayEnd": true, "allowArrayStart": true, "allowBlockEnd": true, "allowBlockStart": true, "allowObjectEnd": true, "allowObjectStart": true, "beforeBlockComment": false, "beforeLineComment": true, "ignorePattern": "^ ?[|:]:? " } ], "lines-between-class-members": [ "warn", "always" ], "max-depth": "off", "max-len": [ "warn", { "code": 78, "ignoreStrings": true, "ignoreUrls": true } ], "max-lines": "off", "max-lines-per-function": [ "warn" ], "max-nested-callbacks": "off", "max-params": "off", "max-statements": [ "warn", { "max": 20 } ], "max-statements-per-line": [ "warn", { "max": 1 } ], "multiline-comment-style": "off", "multiline-ternary": "off", "new-cap": [ "warn", { "capIsNew": true, "newIsCap": true } ], "new-parens": "warn", "newline-per-chained-call": "warn", "no-array-constructor": "warn", "no-bitwise": "warn", "no-continue": "warn", "no-inline-comments": "off", "no-lonely-if": "warn", "no-mixed-operators": "warn", "no-mixed-spaces-and-tabs": "warn", "no-multi-assign": "warn", "no-multiple-empty-lines": [ "warn", { "max": 1 } ], "no-negated-condition": "warn", "no-nested-ternary": "warn", "no-new-object": "warn", "no-plusplus": [ "warn", { "allowForLoopAfterthoughts": true } ], "no-restricted-syntax": "off", "no-tabs": "warn", "no-ternary": "off", "no-trailing-spaces": [ "warn", { "ignoreComments": true } ], "no-underscore-dangle": "off", "no-unneeded-ternary": [ "warn", { "defaultAssignment": false } ], "no-whitespace-before-property": "warn", "nonblock-statement-body-position": "off", "object-curly-newline": [ "warn", { "consistent": true } ], "object-curly-spacing": [ "warn", "always", { "arraysInObjects": true, "objectsInObjects": true } ], "object-property-newline": "off", "one-var": [ "warn", { "initialized": "never", "uninitialized": "always" } ], "one-var-declaration-per-line": "off", "operator-assignment": [ "warn", "always" ], "operator-linebreak": [ "warn", "after", { "overrides": { ":": "before", "=": "ignore", "?": "before" } } ], "padded-blocks": [ "warn", "never" ], "padding-line-between-statements": [ "warn", { "blankLine": "always", "next": "", "prev": [ "const", "let", "var" ] }, { "blankLine": "any", "next": [ "const", "let", "var" ], "prev": [ "const", "let", "var" ] } ], "prefer-object-spread": [ "warn" ], "quote-props": [ "warn", "always" ], "quotes": [ "warn", "double", { "allowTemplateLiterals": true, "avoidEscape": true } ], "require-jsdoc": "off", "semi": [ "warn", "never" ], "semi-spacing": [ "warn", { "after": true, "before": false } ], "semi-style": [ "warn", "last" ], "sort-keys": [ "warn", "asc", { "caseSensitive": false, "natural": true } ], "sort-vars": [ "warn", { "ignoreCase": true } ], "space-before-blocks": [ "warn", "always" ], "space-before-function-paren": [ "warn", "always" ], "space-in-parens": [ "warn", "never" ], "space-infix-ops": "warn", "space-unary-ops": [ "warn", { "nonwords": false, "words": true } ], "spaced-comment": [ "warn", "always", { "markers": [ "global", "globals", "eslint", "eslint-disable", "*package", "!", "," ] } ], "switch-colon-spacing": [ "warn", { "after": true, "before": false } ], "template-tag-spacing": [ "warn", "always" ], "unicode-bom": [ "warn", "never" ], "wrap-regex": "warn" } } #+end_src #+HTML:
*** [[https://eslint.org/docs/rules/#ecmascript-6][ECMAScript 6]]
#+HTML: #+begin_src json :noweb-ref "rules/ecmascript-6.json" :tangle "rules/ecmascript-6.json" { "rules": { "arrow-body-style": [ "warn", "as-needed" ], "arrow-parens": [ "warn", "always" ], "arrow-spacing": [ "warn", { "after": true, "before": true } ], "constructor-super": "warn", "generator-star-spacing": [ "warn", { "after": true, "before": true } ], "no-class-assign": "warn", "no-confusing-arrow": [ "warn", { "allowParens": true } ], "no-const-assign": "warn", "no-dupe-class-members": "warn", "no-duplicate-imports": [ "warn", { "includeExports": true } ], "no-new-symbol": "warn", "no-restricted-imports": "off", "no-this-before-super": "warn", "no-useless-computed-key": "warn", "no-useless-constructor": "warn", "no-useless-rename": "warn", "no-var": "warn", "object-shorthand": [ "warn", "always", { "avoidQuotes": true } ], "prefer-arrow-callback": "off", "prefer-const": "warn", "prefer-destructuring": "off", "prefer-numeric-literals": "warn", "prefer-rest-params": "warn", "prefer-spread": "warn", "prefer-template": "warn", "require-yield": "off", "rest-spread-spacing": [ "warn", "always" ], "sort-imports": "off", "symbol-description": "off", "template-curly-spacing": [ "warn", "never" ], "yield-star-spacing": [ "warn", "both" ] } } #+end_src #+HTML:
** Plugins
*** [[https://github.com/amilajack/eslint-plugin-compat][eslint-plugin-compat]]
#+HTML: #+begin_src json :noweb-ref "plugins/plugin-compat.json" :tangle "plugins/plugin-compat.json" { "plugins": [ "compat" ], "rules": { "compat/compat": "warn" } } #+end_src #+HTML:
*** [[https://github.com/gajus/eslint-plugin-flowtype][eslint-plugin-flowtype]]
#+HTML: #+begin_src json :noweb-ref "plugins/plugin-flowtype.json" :tangle "plugins/plugin-flowtype.json" { "plugins": [ "flowtype" ], "rules": { "flowtype/array-style-complex-type": [ "warn", "verbose" ], "flowtype/array-style-simple-type": [ "warn", "verbose" ], "flowtype/boolean-style": [ "warn", "boolean" ], "flowtype/define-flow-type": "warn", "flowtype/delimiter-dangle": [ "warn", "never" ], "flowtype/generic-spacing": [ "warn", "always" ], "flowtype/newline-after-flow-annotation": [ "warn", "always" ], "flowtype/no-dupe-keys": "warn", "flowtype/no-existential-type": "off", "flowtype/no-flow-fix-me-comments": "warn", "flowtype/no-mutable-array": "off", "flowtype/no-primitive-constructor-types": "warn", "flowtype/no-types-missing-file-annotation": "off", "flowtype/no-unused-expressions": "warn", "flowtype/no-weak-types": [ "warn", { "Function": false, "Object": true, "any": true } ], "flowtype/object-type-delimiter": [ "warn", "comma" ], "flowtype/require-compound-type-alias": [ "warn", "always" ], "flowtype/require-exact-type": "warn", "flowtype/require-parameter-type": "warn", "flowtype/require-return-type": "warn", "flowtype/require-types-at-top": [ "warn", "always" ], "flowtype/require-valid-file-annotation": [ "warn", "never", { "annotationStyle": "block" } ], "flowtype/require-variable-type": "off", "flowtype/semi": [ "warn", "never" ], "flowtype/sort-keys": [ "warn", "asc", { "caseSensitive": false, "natural": true } ], "flowtype/space-after-type-colon": [ "warn", "always", { "allowLineBreak": true } ], "flowtype/space-before-generic-bracket": [ "warn", "always" ], "flowtype/space-before-type-colon": "off", "flowtype/type-id-match": [ "warn", "^([A-Z][a-z0-9]+)+Type$" ], "flowtype/type-import-style": "off", "flowtype/union-intersection-spacing": [ "warn", "always" ], "flowtype/use-flow-type": "warn" }, "settings": { "flowtype": { "onlyFilesWithFlowAnnotation": false } } } #+end_src #+HTML:
*** [[https://github.com/jfmengels/eslint-plugin-fp][eslint-plugin-fp]]
#+HTML: #+begin_src json :noweb-ref "plugins/plugin-fp.json" :tangle "plugins/plugin-fp.json" { "plugins": [ "fp" ], "rules": { "fp/no-arguments": "off", "fp/no-class": "off", "fp/no-delete": "off", "fp/no-events": "off", "fp/no-get-set": "off", "fp/no-let": "off", "fp/no-loops": "off", "fp/no-mutating-assign": "off", "fp/no-mutating-methods": "off", "fp/no-mutation": [ "off", { "commonjs": true } ], "fp/no-nil": "off", "fp/no-proxy": "off", "fp/no-rest-parameters": "off", "fp/no-this": "off", "fp/no-throw": "off", "fp/no-unused-expression": [ "off", { "allowUseStrict": true } ], "fp/no-valueof-field": "off" } } #+end_src #+HTML:
*** [[https://github.com/apollographql/eslint-plugin-graphql][eslint-plugin-graphql]]
#+HTML: #+begin_src json :noweb-ref "plugins/plugin-graphql.json" :tangle "plugins/plugin-graphql.json" { "plugins": [ "graphql" ] } #+end_src #+HTML:
*** [[https://github.com/benmosher/eslint-plugin-import][eslint-plugin-import]]
#+HTML: #+begin_src json :noweb-ref "plugins/plugin-import.json" :tangle "plugins/plugin-import.json" { "plugins": [ "import" ], "rules": { "import/export": "off", "import/no-amd": "off", "import/no-commonjs": [ "off", "allow-primitive-modules" ] } } #+end_src #+HTML:
*** [[https://github.com/azeemba/eslint-plugin-json][eslint-plugin-json]]
#+HTML: #+begin_src json :noweb-ref "plugins/plugin-json.json" :tangle "plugins/plugin-json.json" { "plugins": [ "json" ] } #+end_src #+HTML:
*** [[https://github.com/evcohen/eslint-plugin-jsx-a11y][eslint-plugin-jsx-a11y]]
#+HTML: #+begin_src json :noweb-ref "plugins/plugin-jsx-a11y.json" :tangle "plugins/plugin-jsx-a11y.json" { "plugins": [ "jsx-a11y" ], "rules": { "jsx-a11y/accessible-emoji": "off", "jsx-a11y/alt-text": "off", "jsx-a11y/anchor-has-content": "off", "jsx-a11y/anchor-is-valid": "off", "jsx-a11y/aria-activedescendant-has-tabindex": "off", "jsx-a11y/aria-props": "off", "jsx-a11y/aria-proptypes": "off", "jsx-a11y/aria-role": "off", "jsx-a11y/aria-unsupported-elements": "off", "jsx-a11y/click-events-have-key-events": "off", "jsx-a11y/heading-has-content": "off", "jsx-a11y/html-has-lang": "off", "jsx-a11y/iframe-has-title": "off", "jsx-a11y/img-redundant-alt": "off", "jsx-a11y/interactive-supports-focus": "off", "jsx-a11y/label-has-for": "off", "jsx-a11y/lang": "off", "jsx-a11y/media-has-caption": "off", "jsx-a11y/mouse-events-have-key-events": "off", "jsx-a11y/no-access-key": "off", "jsx-a11y/no-autofocus": "off", "jsx-a11y/no-distracting-elements": "off", "jsx-a11y/no-interactive-element-to-noninteractive-role": "off", "jsx-a11y/no-noninteractive-element-interactions": "off", "jsx-a11y/no-noninteractive-element-to-interactive-role": "off", "jsx-a11y/no-noninteractive-tabindex": "off", "jsx-a11y/no-onchange": "off", "jsx-a11y/no-redundant-roles": "off", "jsx-a11y/no-static-element-interactions": "off", "jsx-a11y/role-has-required-aria-props": "off", "jsx-a11y/role-supports-aria-props": "off", "jsx-a11y/scope": "off", "jsx-a11y/tabindex-no-positive": "off" } } #+end_src #+HTML:
*** [[https://github.com/xjamundx/eslint-plugin-promise][eslint-plugin-promise]]
#+HTML: #+begin_src json :noweb-ref "plugins/plugin-promise.json" :tangle "plugins/plugin-promise.json" { "plugins": [ "promise" ], "rules": { "promise/param-names": "warn" } } #+end_src #+HTML:
*** [[https://github.com/yannickcr/eslint-plugin-react][eslint-plugin-react]]
#+HTML: #+begin_src json :noweb-ref "plugins/plugin-react.json" :tangle "plugins/plugin-react.json" { "plugins": [ "react" ], "rules": { "react/boolean-prop-naming": "warn", "react/button-has-type": "warn", "react/default-props-match-prop-types": "warn", "react/destructuring-assignment": "warn", "react/display-name": "off", "react/forbid-component-props": "off", "react/forbid-elements": "warn", "react/forbid-foreign-prop-types": "warn", "react/forbid-prop-types": "warn", "react/jsx-boolean-value": "warn", "react/jsx-closing-bracket-location": "warn", "react/jsx-closing-tag-location": "warn", "react/jsx-curly-brace-presence": "warn", "react/jsx-curly-spacing": "warn", "react/jsx-equals-spacing": "warn", "react/jsx-filename-extension": "warn", "react/jsx-first-prop-new-line": [ "warn", "always" ], "react/jsx-handler-names": "warn", "react/jsx-indent": [ "warn", 2 ], "react/jsx-indent-props": [ "warn", 2 ], "react/jsx-key": "warn", "react/jsx-max-props-per-line": "warn", "react/jsx-no-bind": [ "warn", { "allowArrowFunctions": true } ], "react/jsx-no-comment-textnodes": "warn", "react/jsx-no-duplicate-props": "warn", "react/jsx-no-literals": "off", "react/jsx-no-target-blank": "warn", "react/jsx-no-undef": "warn", "react/jsx-pascal-case": "warn", "react/jsx-sort-props": "warn", "react/jsx-tag-spacing": [ "warn", { "afterOpening": "never", "beforeClosing": "never", "beforeSelfClosing": "always", "closingSlash": "never" } ], "react/jsx-uses-react": "warn", "react/jsx-uses-vars": "warn", "react/jsx-wrap-multilines": "warn", "react/no-access-state-in-setstate": "warn", "react/no-array-index-key": "warn", "react/no-children-prop": "warn", "react/no-danger": "warn", "react/no-danger-with-children": "warn", "react/no-deprecated": "warn", "react/no-did-mount-set-state": "warn", "react/no-did-update-set-state": "warn", "react/no-direct-mutation-state": "warn", "react/no-find-dom-node": "warn", "react/no-is-mounted": "warn", "react/no-multi-comp": "warn", "react/no-redundant-should-component-update": "warn", "react/no-render-return-value": "warn", "react/no-set-state": "warn", "react/no-string-refs": "warn", "react/no-typos": "warn", "react/no-unescaped-entities": "warn", "react/no-unknown-property": [ "warn", { "ignore": [ "charset" ] } ], "react/no-unused-prop-types": "warn", "react/no-unused-state": "warn", "react/no-will-update-set-state": "warn", "react/prefer-es6-class": "warn", "react/prefer-stateless-function": "warn", "react/prop-types": "off", "react/react-in-jsx-scope": "warn", "react/require-default-props": "warn", "react/require-optimization": "warn", "react/require-render-return": "warn", "react/self-closing-comp": "warn", "react/sort-comp": "warn", "react/sort-prop-types": "warn", "react/style-prop-object": "warn", "react/void-dom-elements-no-children": "warn" } } #+end_src #+HTML:
*** [[https://github.com/standard/eslint-plugin-standard][eslint-plugin-standard]]
#+HTML: #+begin_src json :noweb-ref "plugins/plugin-standard.json" :tangle "plugins/plugin-standard.json" { "plugins": [ "standard" ], "rules": { "standard/array-bracket-even-spacing": [ "warn", "either" ], "standard/computed-property-even-spacing": [ "warn", "even" ], "standard/object-curly-even-spacing": [ "warn", "either" ] } } #+end_src #+HTML: