Files
eslint-config/index.js
2025-12-21 18:37:40 +00:00

56 lines
1.8 KiB
JavaScript

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: "^_" }
],
'@stylistic/indent': ['error', 4],
'@stylistic/semi': ['error', 'always'],
'@stylistic/quotes': ['error', 'single', { avoidEscape: true }],
'@stylistic/no-trailing-spaces': 'error',
'@stylistic/no-multiple-empty-lines': 'error',
}
}
];