{ "env": { "browser": true, "jest": true }, "root": true, "parser": "babel-eslint", "extends": [ "airbnb", "plugin:flowtype/recommended", "prettier", "prettier/flowtype", "prettier/react" ], "plugins": [ "import", "flowtype", "prettier", "jest" ], "rules": { "no-console": ["error", { "allow": ["warn", "error"] }], "prettier/prettier": "error", "import/no-extraneous-dependencies": [ "error", { "devDependencies": [ "**/*.test.js", "**/*.spec.js", "**/*.stories.js", "**/stories/**", "/config/**" ] } ], "import/order": [ "error", { "groups": [["builtin", "external"], ["parent", "sibling"], "index"], "newlines-between": "always" } ], "import/newline-after-import": "error", "import/no-mutable-exports": "error", "import/no-absolute-path": "error", "react/jsx-no-bind": "error", "react/require-default-props": "off", // Optional props can be undefined. "react/default-props-match-prop-types": "off", // Conflict between Flow and ESLint "react/jsx-filename-extension": ["error", { "extensions": [".js"] }], // Don't use jsx "jsx-a11y/label-has-for": "off", // control is wrapped in a label "jsx-a11y/href-no-hash": "off", // broken rule "flowtype/require-valid-file-annotation": ["error", "always"] } }