1+ import js from '@eslint/js' ;
2+ import prettier from 'eslint-config-prettier' ;
3+ import globals from 'globals' ;
4+ import typescript from 'typescript-eslint' ;
5+ import vue from 'eslint-plugin-vue' ;
6+
7+ /** @type {import('eslint').Linter.Config[] } */
8+ export default [
9+ js . configs . recommended ,
10+ ...typescript . configs . recommended ,
11+ {
12+ ...vue . configs . flat . recommended ,
13+ ...vue . configs [ "flat/strongly-recommended" ] ,
14+ ...vue . configs [ "flat/essential" ] ,
15+ languageOptions : {
16+ globals : {
17+ ...globals . browser ,
18+ } ,
19+ } ,
20+ rules : {
21+ "vue/match-component-import-name" : "warn" ,
22+ "vue/match-component-file-name" : [
23+ "error" ,
24+ {
25+ extensions : [ "vue" ] ,
26+ shouldMatchCase : true ,
27+ } ,
28+ ] ,
29+ "vue/component-definition-name-casing" : [ "error" , "PascalCase" ] ,
30+ "vue/block-tag-newline" : [
31+ "warn" ,
32+ {
33+ singleline : "always" ,
34+ multiline : "always" ,
35+ maxEmptyLines : 0 ,
36+ } ,
37+ ] ,
38+ "vue/html-self-closing" : [
39+ "error" ,
40+ {
41+ html : {
42+ void : "always" ,
43+ normal : "never" ,
44+ component : "always" ,
45+ } ,
46+ svg : "always" ,
47+ math : "always" ,
48+ } ,
49+ ] ,
50+ "vue/require-default-prop" : "off" ,
51+ } ,
52+ } ,
53+ {
54+ plugins : {
55+ "@typescript-eslint" : tseslint . plugin ,
56+ } ,
57+ languageOptions : {
58+ parser : tseslint . parser ,
59+ parserOptions : {
60+ project : true ,
61+ } ,
62+ } ,
63+ } ,
64+ {
65+ ignores : [ 'vendor' , 'node_modules' , 'public' , 'bootstrap/ssr' , 'tailwind.config.js' ] ,
66+ } ,
67+ prettier , // Turn off all rules that might conflict with Prettier
68+ ] ;
0 commit comments