devscard/.eslintrc.json

91 lines
2.8 KiB
JSON

{
"root": true,
"parser": "@typescript-eslint/parser",
"parserOptions": {
"project": "./tsconfig.json",
"extraFileExtensions": [".astro"]
},
"settings": {
"import/resolver": {
"typescript": { "project": "./tsconfig.eslint.json" }
}
},
"overrides": [
{
"files": ["*.ts", "*.tsx", "*.astro"],
"extends": ["plugin:@typescript-eslint/recommended"],
"rules": {
// Create empty interface only when it extends other interface.
"@typescript-eslint/no-empty-interface": [2, { "allowSingleExtends": true }]
}
},
{
"files": ["*.ts", "*.tsx"],
"extends": [
"airbnb",
"airbnb-typescript",
"airbnb/hooks",
"plugin:react/jsx-runtime",
"plugin:@typescript-eslint/recommended-requiring-type-checking"
],
"rules": {
// Write all components as arrow functions.
"react/function-component-definition": [
2,
{ "namedComponents": "arrow-function", "unnamedComponents": "arrow-function" }
],
// We use props spreading to pass props to the html elements under custom components.
"react/jsx-props-no-spreading": 0,
// Define values for optional props as by providing default arguments.
"react/require-default-props": [2, { "functions": "defaultArguments" }]
}
},
{
"files": ["*.astro"],
"globals": {
"astroHTML": true
},
"extends": [
"airbnb/base",
"airbnb-typescript/base",
"plugin:astro/recommended",
"plugin:astro/jsx-a11y-recommended"
],
"parser": "astro-eslint-parser",
"parserOptions": {
"parser": "@typescript-eslint/parser"
},
"rules": {
"astro/jsx-a11y/alt-text": [2, { "img": ["Image", "Picture"] }]
}
},
{
"files": ["*.cjs"],
"extends": ["airbnb/base"]
},
{
"files": ["*.ts", "*.tsx", "*.astro", "*.cjs"],
"plugins": ["file-progress", "simple-import-sort"],
"extends": ["plugin:eslint-comments/recommended", "prettier"],
"rules": {
// Shows information about currently processing file in the console.
"file-progress/activate": 1,
// Removes eslint-disable comments when they are not needed.
"eslint-comments/no-unused-disable": 2,
// Ensure each eslint-disable has a description comment.
"eslint-comments/require-description": [2, { "ignore": ["eslint-enable"] }],
// Allow devDependencies in some files.
"import/no-extraneous-dependencies": [2, { "devDependencies": ["astro.config.ts", "tailwind.config.cjs"] }],
// Imports and exports order.
"simple-import-sort/imports": 2,
"simple-import-sort/exports": 2
}
}
]
}