.eslintrc.json
{
"extends": [
"plugin:react/recommended",
"airbnb",
"airbnb/hooks",
"plugin:import/errors",
"plugin:import/warnings",
"plugin:import/typescript",
"plugin:react/jsx-runtime",
"plugin:@typescript-eslint/eslint-recommended",
"plugin:@typescript-eslint/recommended",
"plugin:@typescript-eslint/recommended-requiring-type-checking",
"plugin:@next/next/recommended",
"plugin:storybook/recommended",
"prettier"
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaFeatures": {
"jsx": true
},
"ecmaVersion": 13,
"project": "./tsconfig.json",
"sourceType": "module"
},
"plugins": ["react", "@typescript-eslint", "import", "jsx-a11y", "react-hooks"],
"rules": {
"comma-dangle": [
"error",
{
"arrays": "always-multiline",
"objects": "always-multiline",
"imports": "always-multiline",
"exports": "always-multiline",
"functions": "never"
}
],
"no-console": ["warn", { "allow": ["error"] }],
"object-curly-newline": "off",
"operator-linebreak": "off",
"import/extensions": [
"error",
"ignorePackages",
{
"js": "never",
"jsx": "never",
"ts": "never",
"tsx": "never"
}
],
"import/no-extraneous-dependencies": "off",
"import/order": [
"error",
{
"groups": ["builtin", "external", "parent", "sibling", "index"],
"alphabetize": {
"order": "asc"
}
}
],
"import/prefer-default-export": "off",
"@typescript-eslint/consistent-type-imports": ["error", { "prefer": "type-imports" }],
"@typescript-eslint/member-delimiter-style": "error",
"@typescript-eslint/no-unused-vars": "error",
"@typescript-eslint/semi": "error",
"react/jsx-filename-extension": [
"error",
{
"extensions": [".jsx", ".tsx"]
}
],
"react/function-component-definition": ["error", { "namedComponents": "arrow-function" }],
"react/jsx-props-no-spreading": "off",
"react/prop-types": "off",
"react/require-default-props": ["warn", { "ignoreFunctionalComponents": true }]
},
"settings": {
"import/resolver": {
"typescript": {}
}
}
}