{ "root": true, "extends": [ "plugin:@typescript-eslint/recommended", "plugin:jsx-a11y/recommended" ], "parser": "@typescript-eslint/parser", "plugins": [ "jsx-a11y", "import", "sort-keys-fix", "react-hooks", "@typescript-eslint", "prettier" ], "env": { "browser": true, "node": true, "es6": true, "jest": true }, "globals": { "JSX": "readonly" }, "settings": { "react": { "version": "detect" }, "import/parsers": { "@typescript-eslint/parser": [".ts", ".tsx"] }, "import/resolver": { "node": { "extensions": [".js", ".jsx", ".ts", ".tsx"] }, "typescript": { "alwaysTryTypes": true, // always try to resolve types under `@types` directory even it doesn't contain any source code, like `@types/unist` "project": ["tsconfig.json"] } } }, "rules": { "no-alert": "error", "no-console": "error", "react-hooks/rules-of-hooks": "error", "prettier/prettier": [ "warn", {}, { "properties": { "usePrettierrc": true } } ], "import/order": [ "warn", { "groups": [ "builtin", "external", "internal", "parent", "sibling", "index", "object" ], "newlines-between": "always", "alphabetize": { "order": "asc", "caseInsensitive": true } } ], "import/named": "error", "import/default": "error", "import/export": "error", "import/no-named-as-default": "warn", "import/no-duplicates": "error", "sort-keys-fix/sort-keys-fix": "warn", "@import/no-named-as-default-member": "off", "@typescript-eslint/consistent-type-imports": "warn", "@typescript-eslint/no-non-null-assertion": "off", "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/ban-types": "off", "@typescript-eslint/ban-ts-comment": "off", "@typescript-eslint/no-empty-function": "off" }, "overrides": [ { "files": ["*.js"], "rules": { "@typescript-eslint/explicit-module-boundary-types": ["off"], "@typescript-eslint/no-var-requires": ["off"] } } ] }