Closed3

[ESLint] React x TypeScript を Flat Config で

sprout2000sprout2000
eslint.config.js
const tsPlugin = require("typescript-eslint");
const reactPlugin = require("eslint-plugin-react");
const reactHooksPlugin = require("eslint-plugin-react-hooks");

/** @type {import("eslint").Linter.FlatConfig} */
module.exports = [
  {
    files: ["*/**/*.{ts,tsx}"],
    ignores: ["node_modules/**/*", "dist/**/*"],
    languageOptions: {
      parser: tsPlugin.parser,
    },
    settings: {
      react: {
        version: "detect",
      },
    },
    plugins: {
      react: reactPlugin,
      "react-hooks": reactHooksPlugin,
      "@typescript-eslint": tsPlugin,
    },
    rules: {
      ...tsPlugin.configs.recommended.rules,
      ...reactPlugin.configs.recommended.rules,
      ...reactHooksPlugin.configs.recommended.rules,
      "react/prop-types": "off",
      "react/react-in-jsx-scope": "off",
    },
  },
];
sprout2000sprout2000
npm install --save-dev eslint typescript typescript-eslint
npm install --save-dev eslint-plugin-react eslint-plugin-react-hooks
.vscode/settings.json
{
  "eslint.experimental.useFlatConfig": true,
}
sprout2000sprout2000

"eslint:recommended" と同等の機能も期待する場合

eslint.config.js
const jsPlugin = require("@eslint/js");
const tsPlugin = require("typescript-eslint");
const reactPlugin = require("eslint-plugin-react");
const reactHooksPlugin = require("eslint-plugin-react-hooks");

/** @type {import("eslint").Linter.FlatConfig} */
module.exports = [
  {
    files: ["*/**/*.{ts,tsx}"],
    ignores: ["node_modules/**/*", "dist/**/*"],
    languageOptions: {
      parser: tsPlugin.parser,
    },
    settings: {
      react: {
        version: "detect",
      },
    },
    plugins: {
      react: reactPlugin,
      "react-hooks": reactHooksPlugin,
      "@typescript-eslint": tsPlugin,
    },
    rules: {
      ...jsPlugin.configs.recommended.rules,
      ...tsPlugin.configs.recommended.rules,
      ...reactPlugin.configs.recommended.rules,
      ...reactHooksPlugin.configs.recommended.rules,
      "no-undef": "off",
      "no-unused-vars": "off",
      "react/prop-types": "off",
      "react/react-in-jsx-scope": "off",
    },
  },
];

"no-undef": "off""no-unused-vars": "off" あたりがつらい…

このスクラップは2ヶ月前にクローズされました