-
Notifications
You must be signed in to change notification settings - Fork 0
/
.eslintrc.js
79 lines (62 loc) · 2.17 KB
/
.eslintrc.js
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
const { defineConfig } = require('eslint-define-config');
const path = require('path');
module.exports = defineConfig({
root: true,
// 将浏览器 API、ES API 和 Node API 看做全局变量,不会被特定的规则(如 no-undef)限制。
env: {
browser: true,
es2022: true,
node: true,
},
// 设置自定义全局变量,不会被特定的规则(如 no-undef)限制。
globals: {
// 假如我们希望 jquery 的全局变量不被限制,就按照如下方式声明。
// $: 'readonly',
},
// 集成 Airbnb 规则集以及 vue 相关规则
extends: ['airbnb-base', 'airbnb-typescript/base', 'plugin:vue/vue3-recommended'],
// 指定 vue 解析器
parser: 'vue-eslint-parser',
parserOptions: {
// 配置 TypeScript 解析器
parser: '@typescript-eslint/parser',
// 通过 tsconfig 文件确定解析范围,这里需要绝对路径,否则子模块中 eslint 会出现异常
project: path.resolve(__dirname, 'tsconfig.eslint.json'),
// 支持的 ecmaVersion 版本
ecmaVersion: 13,
// 我们主要使用 esm,设置为 module
sourceType: 'module',
// TypeScript 解析器也要负责 vue 文件的 <script>
extraFileExtensions: ['.vue'],
},
// 在已有规则及基础上微调修改
rules: {
'import/no-extraneous-dependencies': 'off',
'import/prefer-default-export': 'off',
// vue 允许单单词组件名
'vue/multi-word-component-names': 'off',
// 'operator-linebreak': ['error', 'after'],
'class-methods-use-this': 'off',
// 允许使用 ++
'no-plusplus': 'off',
'no-spaced-func': 'off',
// 换行符不作约束
'linebreak-style': 'off',
'@typescript-eslint/indent': 'off',
'operator-linebreak': 'off',
'arrow-parens': 'off',
'object-curly-newline': 'off',
'vue/max-attributes-per-line': 'off',
},
// 文件级别的重写
overrides: [
// 对于 vite 和 vitest 的配置文件,不对 console.log 进行错误提示
{
files: ['**/vite.config.*', '**/vitest.config.*'],
rules: {
'no-console': 'off',
'import/no-relative-packages': 'off', // 允许使用相对路径
},
},
],
});