.eslintrc.cjs /** * This is intended to be a basic starting point for linting in your app. * It relies on recommended configs out of the box for simplicity, but you can * and should modify this configuration to best suit your team's needs. */ /** @type {import('eslint').Linter.Config} */ module.exports = { root: true, parserOptions: { ecmaVersion: "latest", sourceType: "module", ecmaFeatures: { jsx: true, }, }, env: { browser: true, commonjs: true, es6: true, }, // Base config extends: [ "eslint:recommended", "plugin:prettier/recommended", // Enables eslint-plugin-prettier and displays prettier errors as ESLint errors. ], plugins: ["prettier"], // Add prettier as a plugin to apply prettier rules overrides: [ // React { files: ["**/*.{js,jsx,ts,tsx}"], plugins: ["react", "jsx-a11y", "prettier"], extends: [ "plugin:react/recommended", "plugin:react/jsx-runtime", "plugin:react-hooks/recommended", "plugin:jsx-a11y/recommended", "plugin:prettier/recommended", // Extends prettier rules ], settings: { react: { version: "detect", }, formComponents: ["Form"], linkComponents: [ { name: "Link", linkAttribute: "to" }, { name: "NavLink", linkAttribute: "to" }, ], "import/resolver": { typescript: {}, }, }, rules: { "prettier/prettier": "error", // Display prettier issues as ESLint errors }, }, // Typescript { files: ["**/*.{ts,tsx}"], plugins: ["@typescript-eslint", "import", "prettier"], parser: "@typescript-eslint/parser", settings: { "import/internal-regex": "^~/", "import/resolver": { node: { extensions: [".ts", ".tsx"], }, typescript: { alwaysTryTypes: true, }, }, }, extends: [ "plugin:@typescript-eslint/recommended", "plugin:import/recommended", "plugin:import/typescript", "plugin:prettier/recommended", // Extends prettier rules ], rules: { "prettier/prettier": "error", // Display prettier issues as ESLint errors }, }, // Node { files: [".eslintrc.cjs"], env: { node: true, }, }, ], };
.vscode/settings.json
{{ "eslint.run": "onSave", "editor.codeActionsOnSave": { "source.fixAll.eslint": "always" }, "eslint.validate": [ "javascript", "javascriptreact", "typescript", "typescriptreact" ] }