update lint config

This commit is contained in:
2026-04-11 16:06:18 +02:00
parent 2b0b7bc2fe
commit 29567dcd76
6 changed files with 376 additions and 219 deletions
+152
View File
@@ -0,0 +1,152 @@
import js from '@eslint/js';
import globals from 'globals';
import tsParser from '@typescript-eslint/parser';
import tsPlugin from '@typescript-eslint/eslint-plugin';
import vueParser from 'vue-eslint-parser';
import vuePlugin from 'eslint-plugin-vue';
import prettierPlugin from 'eslint-plugin-prettier';
import simpleImportSort from 'eslint-plugin-simple-import-sort';
import unusedImports from 'eslint-plugin-unused-imports';
import importPlugin from 'eslint-plugin-import';
const prettierOptions = {
semi: true,
singleQuote: true,
singleAttributePerLine: false,
htmlWhitespaceSensitivity: 'css',
printWidth: 80,
tabWidth: 4,
endOfLine: 'auto',
plugins: ['prettier-plugin-tailwindcss'],
tailwindFunctions: ['clsx', 'cn', 'cva'],
tailwindStylesheet: 'resources/css/app.css',
};
const eslintConfig = [
{
ignores: [
'**/dist/**',
'vite/**',
'public/**',
'node_modules/**',
// aus vorheriger .prettierignore
'resources/js/components/ui/**',
'resources/views/mail/**',
],
},
js.configs.recommended,
{
files: ['**/*.{js,mjs,cjs,ts,tsx}'],
languageOptions: {
parser: tsParser,
ecmaVersion: 2022,
sourceType: 'module',
globals: {
...globals.browser,
...globals.es2023,
},
},
plugins: {
'@typescript-eslint': tsPlugin,
prettier: prettierPlugin,
'unused-imports': unusedImports,
'simple-import-sort': simpleImportSort,
import: importPlugin,
},
rules: {
'prettier/prettier': ['warn', prettierOptions],
'@typescript-eslint/comma-dangle': 'off',
'@typescript-eslint/consistent-type-imports': 'off',
'@typescript-eslint/no-unused-vars': 'off',
'no-unused-vars': 'off',
'import/prefer-default-export': 'off',
'simple-import-sort/imports': 'off',
'simple-import-sort/exports': 'off',
'class-methods-use-this': 'off',
'unused-imports/no-unused-imports': 'warn',
'unused-imports/no-unused-vars': 'off',
'no-plusplus': 'off',
'no-restricted-syntax': [
'error',
'LabeledStatement',
'WithStatement',
],
'no-await-in-loop': 'off',
'no-param-reassign': 'off',
'no-underscore-dangle': 'off',
curly: 'error',
'no-nested-ternary': 'off',
},
},
{
files: ['**/*.vue'],
languageOptions: {
parser: vueParser,
parserOptions: {
parser: tsParser,
ecmaVersion: 2022,
sourceType: 'module',
extraFileExtensions: ['.vue'],
},
globals: {
...globals.browser,
...globals.es2023,
},
},
plugins: {
vue: vuePlugin,
'@typescript-eslint': tsPlugin,
prettier: prettierPlugin,
'unused-imports': unusedImports,
'simple-import-sort': simpleImportSort,
import: importPlugin,
},
rules: {
'prettier/prettier': ['warn', prettierOptions],
'@typescript-eslint/no-unused-vars': 'off',
'no-unused-vars': 'off',
'unused-imports/no-unused-imports': 'warn',
'unused-imports/no-unused-vars': 'off',
'vue/multi-word-component-names': 'off',
'vue/html-self-closing': 'off',
'vue/max-attributes-per-line': 'off',
'vue/singleline-html-element-content-newline': 'off',
'vue/multiline-html-element-content-newline': 'off',
'class-methods-use-this': 'off',
'no-plusplus': 'off',
'no-await-in-loop': 'off',
'no-param-reassign': 'off',
'no-underscore-dangle': 'off',
curly: 'error',
'no-nested-ternary': 'off',
},
},
{
files: ['**/*.yml', '**/*.yaml'],
plugins: {
prettier: prettierPlugin,
},
rules: {
'prettier/prettier': [
'warn',
{
tabWidth: 2,
},
],
},
},
];
export default eslintConfig;