@effective/eslint-config
Version:
ESLint Config for TypeScript and ReactJS
53 lines (47 loc) • 1.42 kB
JavaScript
import rules from "./generated/rules.js"
import typeScriptParser from "@typescript-eslint/parser"
import typeScriptPlugin from "@typescript-eslint/eslint-plugin"
import jsdocPlugin from "eslint-plugin-jsdoc"
import jsxA11yPlugin from "eslint-plugin-jsx-a11y"
import nodePlugin from "eslint-plugin-n"
import reactPlugin from "eslint-plugin-react"
import reactHooksPlugin from "eslint-plugin-react-hooks"
import regexpPlugin from "eslint-plugin-regexp"
import simpleImportSortPlugin from "eslint-plugin-simple-import-sort"
import unicornPlugin from "eslint-plugin-unicorn"
import unusedImportsPlugin from "eslint-plugin-unused-imports"
const plugins = {
"@typescript-eslint": typeScriptPlugin,
jsdoc: jsdocPlugin,
"jsx-a11y": jsxA11yPlugin,
n: nodePlugin,
react: reactPlugin,
"react-hooks": reactHooksPlugin,
regexp: regexpPlugin,
"simple-import-sort": simpleImportSortPlugin,
unicorn: unicornPlugin,
"unused-imports": unusedImportsPlugin
}
export const base = {
files: ["**/*.ts", "**/*.tsx", "**/*.mts"],
languageOptions: {
parser: typeScriptParser,
parserOptions: {
warnOnUnsupportedTypeScriptVersion: false,
ecmaFeatures: { jsx: true },
ecmaVersion: "latest",
sourceType: "module",
project: `${process.cwd()}/tsconfig.json`
}
},
settings: {
react: {
version: "18.2"
}
},
plugins
}
export const main = {
...base,
rules
}