55 lines
1.5 KiB
JavaScript
55 lines
1.5 KiB
JavaScript
import js from "@eslint/js";
|
|
import globals from "globals";
|
|
import tseslint from "typescript-eslint";
|
|
import reactHooks from "eslint-plugin-react-hooks";
|
|
import reactRefresh from "eslint-plugin-react-refresh";
|
|
import importPlugin from "eslint-plugin-import-x";
|
|
import prettier from "eslint-plugin-prettier/recommended";
|
|
import { defineConfig, globalIgnores } from "eslint/config";
|
|
|
|
export default defineConfig([
|
|
globalIgnores(["dist", "src/types.ts"]),
|
|
{
|
|
files: ["**/*.{ts,tsx}"],
|
|
extends: [
|
|
js.configs.recommended,
|
|
tseslint.configs.recommended,
|
|
reactHooks.configs.flat.recommended,
|
|
reactRefresh.configs.vite,
|
|
prettier,
|
|
],
|
|
plugins: {
|
|
"import-x": importPlugin,
|
|
},
|
|
languageOptions: {
|
|
globals: globals.browser,
|
|
},
|
|
settings: {
|
|
react: {
|
|
version: "detect",
|
|
},
|
|
},
|
|
rules: {
|
|
"no-console": "off",
|
|
"prefer-destructuring": "off",
|
|
"import-x/no-extraneous-dependencies": [
|
|
"error",
|
|
{
|
|
devDependencies: ["**/*.test.ts", "**/*.spec.ts", "**/__tests__/**"],
|
|
},
|
|
],
|
|
"import-x/prefer-default-export": "off",
|
|
"import-x/order": [
|
|
"error",
|
|
{
|
|
groups: ["builtin", "external", "internal", ["parent", "sibling", "index"]],
|
|
"newlines-between": "always",
|
|
alphabetize: { order: "asc" },
|
|
},
|
|
],
|
|
"react-hooks/exhaustive-deps": "error",
|
|
"react-hooks/rules-of-hooks": "error",
|
|
},
|
|
},
|
|
]);
|