.eslintrc.json•4.17 kB
{
"extends": [
"plugin:@nx/react",
"../../.eslintrc.base.json"
],
"ignorePatterns": [
"!**/*"
],
"overrides": [
{
"files": [
"**/*.ts",
"**/*.tsx"
],
"parser": "@typescript-eslint/parser",
"settings": {
"react": {
"version": "detect"
},
"import/resolver": {
"typescript": {},
"alias": {
"map": [
[
"@",
"./src"
]
],
"extensions": [
".ts",
".tsx",
".js",
".jsx",
".json"
]
}
}
},
"env": {
"browser": true,
"node": true,
"es6": true
},
"extends": [
"eslint:recommended",
"plugin:import/errors",
"plugin:import/warnings",
"plugin:import/typescript",
"plugin:@typescript-eslint/recommended",
"plugin:react/recommended",
"plugin:react-hooks/recommended",
//"plugin:jsx-a11y/recommended",
"plugin:prettier/recommended",
"plugin:testing-library/react",
"plugin:jest-dom/recommended",
"plugin:vitest/legacy-recommended"
],
"rules": {
"react-hooks/rules-of-hooks": "error",
"react-hooks/exhaustive-deps": "warn",
"import/no-restricted-paths": [
"error",
{
"zones": [
// Previous restrictions...
// enforce unidirectional codebase:
// e.g. src/app can import from src/features but not the other way around
{
"target": "./src/features",
"from": "./src/app"
},
{
"target": [
"./src/components",
"./src/hooks",
"./src/lib",
"./src/types",
"./src/utils"
],
"from": [
"./src/features",
"./src/app"
]
}
]
}
],
"import/no-cycle": "off",
"linebreak-style": [
"error",
"unix"
],
"react/prop-types": "error",
"import/order": [
"error",
{
"groups": [
"builtin",
"external",
"internal",
"parent",
"sibling",
"index",
"object"
],
"newlines-between": "always",
"alphabetize": {
"order": "asc",
"caseInsensitive": true
}
}
],
"import/default": "off",
"import/no-named-as-default-member": "off",
"import/no-named-as-default": "off",
"react/react-in-jsx-scope": "off",
"jsx-a11y/anchor-is-valid": "off",
"@typescript-eslint/no-unused-vars": [
"error"
],
"@typescript-eslint/explicit-function-return-type": [
"off"
],
"@typescript-eslint/explicit-module-boundary-types": [
"off"
],
"@typescript-eslint/no-empty-function": [
"off"
],
"@typescript-eslint/no-explicit-any": [
"off"
],
"@typescript-eslint/indent": "off",
"prettier/prettier": [
"error",
{
"singleQuote": true,
"trailingComma": "all",
"printWidth": 80,
"tabWidth": 2,
"useTabs": false,
"jsxBracketSameLine": false
}
]
}
},
{
"files": [
"./src/components/**/*.{ts,tsx}"
],
"rules": {
"react/prop-types": "off"
}
},
{
"files": [
"*.ts",
"*.tsx",
"*.js",
"*.jsx"
],
"rules": {}
},
{
"files": [
"*.ts",
"*.tsx"
],
"rules": {}
},
{
"files": [
"*.js",
"*.jsx"
],
"rules": {}
}
]
}