ESLint é uma ferramenta de análise de código utilizado para padronizar código entre desenvolvedores como utilização de pontos e vírgulas, tamanho máximo de caracteres em linhas e todo outro tipo de padronização.
Desde já deixo claro que essas regras estão em constante mudança, vou tentar deixar essa postagem o mais atualizada possível
Primeiramente vamos instalar as dependências.
# npm npm install --save-dev eslint prettier eslint-config-prettier eslint-plugin-import eslint-plugin-import-helpers eslint-plugin-prettier eslint-plugin-react eslint-plugin-react-hooks @typescript-eslint/eslint-plugin @typescript-eslint/parser # yarn yarn add eslint prettier eslint-config-prettier eslint-plugin-import eslint-plugin-import-helpers eslint-plugin-prettier eslint-plugin-react eslint-plugin-react-hooks @typescript-eslint/eslint-plugin @typescript-eslint/parser -D
Após instalar as dependências vamos criar o arquivo
.eslintrc.json
// .eslintrc.json { "parser": "@typescript-eslint/parser", "plugins": [ "react", "react-hooks", "@typescript-eslint", "prettier", "eslint-plugin-import-helpers", "import" ], "extends": [ "eslint:recommended", "plugin:react/recommended", "plugin:@typescript-eslint/recommended", // Uncomment the following lines to enable eslint-config-prettier // Is not enabled right now to avoid issues with the Next.js repo // "prettier", "prettier/@typescript-eslint", "plugin:prettier/recommended" ], "env": { "es6": true, "browser": true, "jest": false, "node": true }, "rules": { "comma-dangle": ["error", "always-multiline"], "semi": "error", "prettier/prettier": "error", "react-hooks/rules-of-hooks": "error", "react-hooks/exhaustive-deps": "warn", "react/react-in-jsx-scope": 0, "react/display-name": 0, "react/prop-types": "off", "@typescript-eslint/explicit-module-boundary-types": "off", "@typescript-eslint/camelcase": "off", "@typescript-eslint/no-empty-interface": "off", "@typescript-eslint/explicit-function-return-type": 0, "@typescript-eslint/explicit-member-accessibility": 0, "@typescript-eslint/indent": 0, "@typescript-eslint/member-delimiter-style": 0, "@typescript-eslint/no-explicit-any": 0, "@typescript-eslint/no-var-requires": 0, "@typescript-eslint/no-use-before-define": 0, "@typescript-eslint/no-unused-vars": [ "warn", { "argsIgnorePattern": "^_" } ], "no-console": [ "warn", { "allow": ["warn", "error"] } ], "import/no-duplicates": ["error", {"considerQueryString": true}], "import-helpers/order-imports": [ "warn", { "newlinesBetween": "always", "groups": [ ["/^react/"], ["module", "/^@chakra/"], ["/^~//"], ["parent", "sibling", "index"] ], "alphabetize": { "order": "asc", "ignoreCase": true } } ] } }
Por último mas não menos importante vamos configurar o prettier criando o arquivo
.prettierrc
// .prettierrc { "semi": true, "singleQuote": true }