84 lines
1.9 KiB
JavaScript
84 lines
1.9 KiB
JavaScript
import { globalIgnores } from 'eslint/config'
|
|
import globals from 'globals'
|
|
import js from '@eslint/js'
|
|
import pluginVue from 'eslint-plugin-vue'
|
|
import {
|
|
defineConfigWithVueTs,
|
|
vueTsConfigs,
|
|
} from '@vue/eslint-config-typescript'
|
|
import pluginOxlint from 'eslint-plugin-oxlint'
|
|
import skipFormatting from '@vue/eslint-config-prettier/skip-formatting'
|
|
|
|
export default defineConfigWithVueTs([
|
|
{
|
|
name: 'app/files-to-lint',
|
|
files: ['**/*.{ts,js,mjs,jsx,vue}'],
|
|
},
|
|
|
|
globalIgnores(['**/dist/**', '**/dist-ssr/**', '**/coverage/**']),
|
|
|
|
{
|
|
languageOptions: {
|
|
globals: {...globals.browser},
|
|
},
|
|
|
|
rules: {
|
|
'no-console': 'warn',
|
|
'no-debugger': 'warn',
|
|
"quotes": ["warn", "double"],
|
|
"semi": [2, "always"],
|
|
"comma-dangle": [2, "never"],
|
|
"eqeqeq": "warn",
|
|
"no-var": "warn",
|
|
"no-multi-spaces": "warn",
|
|
"no-trailing-spaces": "warn",
|
|
"camelcase": "warn",
|
|
"indent": ["warn", 2],
|
|
"space-infix-ops": "warn",
|
|
"space-unary-ops": "warn",
|
|
"switch-colon-spacing": "warn",
|
|
"arrow-spacing": "warn",
|
|
"array-bracket-spacing": "warn",
|
|
"vue/no-unused-vars": "warn",
|
|
"vue/multi-word-component-names": "off",
|
|
'vue/html-indent': [
|
|
'error',
|
|
2,
|
|
{
|
|
attribute: 1,
|
|
baseIndent: 1,
|
|
closeBracket: 0,
|
|
alignAttributesVertically: true,
|
|
ignores: []
|
|
}
|
|
],
|
|
'vue/max-attributes-per-line': [
|
|
'error',
|
|
{
|
|
singleline: {
|
|
max: 3
|
|
}
|
|
}
|
|
],
|
|
'vue/html-closing-bracket-newline': [
|
|
'error',
|
|
{
|
|
singleline: 'never',
|
|
multiline: 'always'
|
|
}
|
|
]
|
|
}
|
|
},
|
|
|
|
js.configs.recommended,
|
|
...pluginVue.configs['flat/essential'],
|
|
vueTsConfigs.recommended,
|
|
...pluginOxlint.configs['flat/recommended'],
|
|
skipFormatting,
|
|
{
|
|
rules: {
|
|
"@typescript-eslint/no-explicit-any": "warn"
|
|
}
|
|
}
|
|
])
|