{ "parser": "@typescript-eslint/parser", "plugins": [ "@typescript-eslint", "react-native" // for no-inline-styles rule ], "extends": [ "standard", "standard-react", "standard-jsx", "plugin:react-hooks/recommended", "plugin:react/recommended", "plugin:@typescript-eslint/recommended", // "@react-native-community", // TODO: try to enable "plugin:prettier/recommended" // removes all eslint rules that can mess up with prettier ], "rules": { "react/jsx-handler-names": "off", // activated by standard-react config "react/display-name": "off", "react-native/no-inline-styles": "error", "react-native/no-unused-styles": "error", "react-native/no-single-element-style-arrays": "error", "prettier/prettier": [ "warn", { "singleQuote": true, "printWidth": 140, "trailingComma": "all", "arrowParens": "avoid" } ], "@typescript-eslint/no-empty-function": "off", // used often in the codebase, useful e.g. in testing "@typescript-eslint/ban-ts-comment": [ "error", { "ts-expect-error": "allow-with-description", "ts-ignore": "allow-with-description", // temporary allow to ease the migration "ts-nocheck": true, "ts-check": false } ], "@typescript-eslint/no-unused-vars": ["error", { "args": "none" }], // disable rules that are superseded by @typescript-eslint rules "no-unused-vars": "off", "no-use-before-define": "off", // disable rules that we want to enforce only for typescript files "@typescript-eslint/explicit-module-boundary-types": "off", "@typescript-eslint/no-var-requires": "off", "@typescript-eslint/no-this-alias": "off", "@typescript-eslint/no-use-before-define": "off" }, "overrides": [ { // enable the rule specifically for TypeScript files "files": ["*.ts", "*.tsx"], "rules": { "@typescript-eslint/explicit-module-boundary-types": "off", "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/no-this-alias": "off", "@typescript-eslint/no-var-requires": "off", "@typescript-eslint/no-inferrable-types": "off", "@typescript-eslint/no-use-before-define": ["error", { "variables": false }] } } ], "env": { "es6": true }, "globals": { "fetch": false }, "settings": { "react": { // this is for eslint-plugin-react "version": "detect" // React version. "detect" automatically picks the version you have installed. } } }