|
module.exports = {
|
|
parser: "@typescript-eslint/parser",
|
|
parserOptions: {
|
|
ecmaVersion: 2020,
|
|
sourceType: "module",
|
|
ecmaFeatures: {
|
|
jsx: true,
|
|
},
|
|
},
|
|
env: {
|
|
browser: true,
|
|
node: true,
|
|
es6: true,
|
|
},
|
|
settings: {
|
|
react: {
|
|
version: "detect",
|
|
},
|
|
},
|
|
plugins: ["@typescript-eslint", "react", "prettier", "unused-imports", "simple-import-sort", "chakra-ui"],
|
|
extends: [
|
|
"@remix-run/eslint-config",
|
|
"eslint:recommended",
|
|
"plugin:react/recommended",
|
|
"plugin:react-hooks/recommended",
|
|
"plugin:@typescript-eslint/recommended",
|
|
],
|
|
rules: {
|
|
"react/jsx-curly-brace-presence": ["error", { props: "never", children: "never" }],
|
|
"no-async-promise-executor": "off",
|
|
"react/prop-types": "off",
|
|
"react/display-name": "off",
|
|
"@typescript-eslint/ban-ts-comment": "off",
|
|
"@typescript-eslint/no-explicit-any": "off",
|
|
"@typescript-eslint/explicit-function-return-type": "off",
|
|
"@typescript-eslint/explicit-module-boundary-types": "off",
|
|
"@typescript-eslint/no-unused-vars": "off",
|
|
"unused-imports/no-unused-imports": "error",
|
|
"unused-imports/no-unused-vars": "error",
|
|
"react/react-in-jsx-scope": "off",
|
|
"chakra-ui/props-order": "error",
|
|
"chakra-ui/props-shorthand": [
|
|
"error",
|
|
{
|
|
noShorthand: true,
|
|
applyToAllComponents: true,
|
|
},
|
|
],
|
|
"chakra-ui/require-specific-component": "error",
|
|
"prettier/prettier": [
|
|
"error",
|
|
{
|
|
semi: false,
|
|
singleQuote: false,
|
|
parser: "typescript",
|
|
bracketSpacing: true,
|
|
},
|
|
],
|
|
"simple-import-sort/imports": [
|
|
"error",
|
|
{
|
|
groups: [
|
|
// Packages `react` related packages come first.
|
|
["^react", "^@?\\w"],
|
|
// Internal packages.
|
|
["^(@root)(/.*|$)"],
|
|
["^(@app)(/.*|$)"],
|
|
// Side effect imports.
|
|
["^\\u0000"],
|
|
// Other relative imports. Put same-folder imports and `.` last.
|
|
["^\\./(?=.*/)(?!/?$)", "^\\.(?!/?$)", "^\\./?$"],
|
|
],
|
|
},
|
|
],
|
|
},
|
|
overrides: [
|
|
{
|
|
files: ["*.js"],
|
|
rules: {
|
|
"@typescript-eslint/no-var-requires": "off",
|
|
},
|
|
},
|
|
],
|
|
}
|