@epic-web/config
Version:
Reasonable Oxlint, Oxfmt, and TypeScript configs for epic web devs
129 lines (128 loc) • 2.57 kB
JSON
{
"$schema": "./node_modules/oxlint/configuration_schema.json",
"env": {
"browser": true,
"node": true
},
"plugins": ["import", "react", "typescript", "vitest"],
"jsPlugins": ["./lint-rules/epic-web-plugin.js"],
"ignorePatterns": [
"**/.cache/**",
"**/node_modules/**",
"**/build/**",
"**/public/**",
"**/*.json",
"**/playwright-report/**",
"**/server-build/**",
"**/dist/**",
"**/coverage/**",
"**/*.tsbuildinfo",
"**/.react-router/**",
"**/.wrangler/**",
"**/worker-configuration.d.ts"
],
"rules": {
"eslint/no-unexpected-multiline": "error",
"eslint/no-warning-comments": [
"error",
{
"terms": ["FIXME"],
"location": "anywhere"
}
],
"epic-web/no-manual-dispose": "warn",
"epic-web/no-prettier-ignore": "warn",
"import/no-duplicates": [
"warn",
{
"prefer-inline": true
}
]
},
"overrides": [
{
"files": ["**/*.tsx", "**/*.jsx"],
"rules": {
"react/jsx-key": "warn"
}
},
{
"files": ["**/*.js", "**/*.jsx"],
"rules": {
"eslint/no-undef": "error"
}
},
{
"files": ["**/*.ts", "**/*.tsx"],
"rules": {
"import/consistent-type-specifier-style": ["warn", "prefer-inline"],
"typescript/consistent-type-imports": [
"warn",
{
"prefer": "type-imports",
"disallowTypeAnnotations": true,
"fixStyle": "inline-type-imports"
}
],
"typescript/no-misused-promises": [
"error",
{
"checksVoidReturn": false
}
],
"typescript/no-floating-promises": "error"
}
},
{
"files": ["**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx"],
"rules": {
"eslint/no-unused-vars": [
"warn",
{
"args": "after-used",
"argsIgnorePattern": "^(_|ignored)",
"ignoreRestSiblings": true,
"varsIgnorePattern": "^(_|ignored)"
}
],
"eslint/no-restricted-imports": [
"error",
{
"patterns": [
{
"group": [
"**/tests/**",
"**/#tests/**",
"**/__tests__/**/*",
"**/*.test.*",
"**/*.spec.*"
],
"message": "Do not import test files in source files"
}
]
}
]
}
},
{
"files": [
"**/tests/**",
"**/#tests/**",
"**/__tests__/**/*",
"**/*.test.*",
"**/*.spec.*"
],
"rules": {
"eslint/no-restricted-imports": "off",
"epic-web/prefer-dispose-in-tests": "warn",
"vitest/no-import-node-test": "error"
}
},
{
"files": ["**/tests/e2e/**"],
"rules": {
"vitest/no-import-node-test": "off"
}
}
]
}