60 lines
1.5 KiB
TypeScript
60 lines
1.5 KiB
TypeScript
import js from "@eslint/js";
|
|
import tseslint from "@typescript-eslint/eslint-plugin";
|
|
import tsParser from "@typescript-eslint/parser";
|
|
import react from "eslint-plugin-react";
|
|
import reactHooks from "eslint-plugin-react-hooks";
|
|
import a11y from "eslint-plugin-jsx-a11y";
|
|
import importPlugin from "eslint-plugin-import";
|
|
import unusedImports from "eslint-plugin-unused-imports";
|
|
|
|
export default [
|
|
/* Core ESLint recommended rules */
|
|
js.configs.recommended,
|
|
|
|
/* TypeScript recommended */
|
|
{
|
|
files: ["**/*.ts", "**/*.tsx"],
|
|
languageOptions: {
|
|
parser: tsParser,
|
|
parserOptions: {
|
|
project: true
|
|
}
|
|
},
|
|
plugins: {
|
|
"@typescript-eslint": tseslint
|
|
},
|
|
|
|
...tseslint.configs["recommended-type-checked"]
|
|
},
|
|
|
|
/* React recommended */
|
|
react.configs.flat.recommended,
|
|
|
|
/* React Hooks recommended */
|
|
{
|
|
plugins: { "react-hooks": reactHooks },
|
|
rules: {
|
|
...reactHooks.configs.recommended.rules
|
|
}
|
|
},
|
|
|
|
|
|
/* JSX Accessibility recommended */
|
|
a11y.flatConfigs.recommended,
|
|
|
|
/* Import validation rules */
|
|
importPlugin.flatConfigs.recommended,
|
|
|
|
/* Unused imports */
|
|
{
|
|
plugins: { "unused-imports": unusedImports },
|
|
rules: {
|
|
"unused-imports/no-unused-imports": "error",
|
|
"unused-imports/no-unused-vars": [
|
|
"warn",
|
|
{ argsIgnorePattern: "^_", varsIgnorePattern: "^_" }
|
|
]
|
|
}
|
|
}
|
|
];
|