1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
  | // https://eslint.nodejs.cn/docs/latest/use/configure/configuration-files 
 |    
 |  import globals from "globals"; 
 |  import pluginJs from "@eslint/js"; // JavaScript 规则 
 |  import pluginVue from "eslint-plugin-vue"; // Vue 规则 
 |  import pluginTypeScript from "@typescript-eslint/eslint-plugin"; // TypeScript 规则 
 |    
 |  import parserVue from "vue-eslint-parser"; // Vue 解析器 
 |  import parserTypeScript from "@typescript-eslint/parser"; // TypeScript 解析器 
 |    
 |  import configPrettier from "eslint-config-prettier"; // 禁用与 Prettier 冲突的规则 
 |  import pluginPrettier from "eslint-plugin-prettier"; // 运行 Prettier 规则 
 |    
 |  // 解析自动导入配置 
 |  import fs from "fs"; 
 |  const autoImportConfig = JSON.parse(fs.readFileSync(".eslintrc-auto-import.json", "utf-8")); 
 |    
 |  /** @type {import('eslint').Linter.Config[]} */ 
 |  export default [ 
 |    // 忽略指定文件 
 |    { 
 |      ignores: [ 
 |        "node_modules/**", 
 |        "dist/**", 
 |        "unpackage/**", 
 |        "public/**", 
 |        "static/**", 
 |        "**/u-charts/**", 
 |        "**/qiun-**/**", 
 |        "**/auto-imports.d.ts", 
 |        "src/types/auto-imports.d.ts", 
 |      ], 
 |    }, 
 |    // 检查文件的配置 
 |    { 
 |      files: ["**/*.{js,mjs,cjs,ts,vue}"], 
 |      ignores: ["**/*.d.ts"], 
 |      languageOptions: { 
 |        globals: { 
 |          ...globals.browser, 
 |          ...globals.node, 
 |          ...autoImportConfig.globals, 
 |          ...{ 
 |            uni: "readonly", // uni-app 全局对象 
 |            UniApp: "readonly", // uni-app 全局对象 
 |            ResponseData: "readonly", // 统一响应数据类型 
 |            PageResult: "readonly", // 分页结果数据类型 
 |            PageQuery: "readonly", // 分页查询数据类型 
 |            OptionType: "readonly", // 选项类型 
 |            getCurrentPages: "readonly", // uni-app 全局 API 
 |          }, 
 |        }, 
 |      }, 
 |      plugins: { prettier: pluginPrettier }, 
 |      rules: { 
 |        ...configPrettier.rules, // 关闭与 Prettier 冲突的规则 
 |        ...pluginPrettier.configs.recommended.rules, // 启用 Prettier 规则 
 |        "prettier/prettier": "error", // 强制 Prettier 格式化 
 |        "no-unused-vars": [ 
 |          "error", 
 |          { 
 |            argsIgnorePattern: "^_", // 忽略参数名以 _ 开头的参数未使用警告 
 |            varsIgnorePattern: "^[A-Z0-9_]+$", // 忽略变量名为大写字母、数字或下划线组合的未使用警告(枚举定义未使用场景) 
 |            ignoreRestSiblings: true, // 忽略解构赋值中同级未使用变量的警告 
 |          }, 
 |        ], 
 |        "no-prototype-builtins": "off", // 允许直接调用Object.prototype方法 
 |        "no-constant-binary-expression": "warn", // 将常量二元表达式警告降为警告级别 
 |      }, 
 |    }, 
 |    // JavaScript 配置 
 |    pluginJs.configs.recommended, 
 |    
 |    // TypeScript 配置 
 |    { 
 |      files: ["**/*.ts"], 
 |      ignores: ["**/*.d.ts"], // 排除d.ts文件 
 |      languageOptions: { 
 |        parser: parserTypeScript, 
 |        parserOptions: { 
 |          sourceType: "module", 
 |        }, 
 |      }, 
 |      plugins: { "@typescript-eslint": pluginTypeScript }, 
 |      rules: { 
 |        ...pluginTypeScript.configs.strict.rules, // TypeScript 严格规则 
 |        "@typescript-eslint/no-explicit-any": "off", // 允许使用 any 
 |        "@typescript-eslint/no-empty-function": "off", // 允许空函数 
 |        "@typescript-eslint/no-empty-object-type": "off", // 允许空对象类型 
 |      }, 
 |    }, 
 |    
 |    // Vue 配置 
 |    { 
 |      files: ["**/*.vue"], 
 |      languageOptions: { 
 |        parser: parserVue, 
 |        parserOptions: { 
 |          parser: parserTypeScript, 
 |          sourceType: "module", 
 |        }, 
 |      }, 
 |      plugins: { vue: pluginVue, "@typescript-eslint": pluginTypeScript }, 
 |      processor: pluginVue.processors[".vue"], 
 |      rules: { 
 |        ...pluginVue.configs["vue3-recommended"].rules, // Vue 3 推荐规则 
 |        "vue/no-v-html": "off", // 允许 v-html 
 |        "vue/multi-word-component-names": "off", // 允许单个单词组件名 
 |      }, 
 |    }, 
 |    
 |    // 单独针对第三方组件的处理 
 |    { 
 |      files: ["**/qiun-data-charts.vue", "**/qiun-data-charts/**/*.vue", "**/u-charts/**"], 
 |      linterOptions: { 
 |        noInlineConfig: false, 
 |        reportUnusedDisableDirectives: false, 
 |      }, 
 |      rules: { 
 |        // 禁用所有规则 
 |        ...Object.fromEntries( 
 |          Object.keys(pluginVue.configs["vue3-recommended"].rules || {}).map((key) => [key, "off"]) 
 |        ), 
 |        "no-unused-vars": "off", 
 |        "no-prototype-builtins": "off", 
 |        "@typescript-eslint/no-explicit-any": "off", 
 |      }, 
 |    }, 
 |  ]; 
 |  
  |