-
Notifications
You must be signed in to change notification settings - Fork 0
/
.eslintrc.cjs
117 lines (117 loc) · 3.68 KB
/
.eslintrc.cjs
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
/* eslint-disable no-undef */
module.exports = {
ignorePatterns: [
'node_modules/',
'dist/',
'star-wars/',
],
plugins: [
'import',
'@stylistic/js',
],
env: {
browser: true,
es2021: true,
},
extends: [
'airbnb-base',
'plugin:vue/vue3-recommended',
],
globals: {
logger: 'readonly',
},
overrides: [
{
env: {
node: false,
},
files: [
'.eslintrc.{js,cjs}',
],
parserOptions: {
sourceType: 'script',
},
},
],
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
},
rules: {
// '@stylistic/js/indent': ['error', 4],
indent: ['error', 4],
'no-underscore-dangle': ['error', {
allowAfterSuper: true,
allowAfterThis: true,
}],
'no-param-reassign': ['error', {
props: false,
}],
'class-methods-use-this': ['error', {
exceptMethods: [
'initialize',
'clone',
],
}],
'vue/multi-word-component-names': 'off',
// '@stylistic/js/lines-between-class-members'
'lines-between-class-members': ['error', 'always', { exceptAfterSingleLine: true }],
'no-restricted-syntax': ['error',
{
selector: 'ForInStatement',
message: 'for..in loops iterate over the entire prototype chain, which is virtually never what you want. Use Object.{keys,values,entries}, and iterate over the resulting array.',
},
{
selector: 'LabeledStatement',
message: 'Labels are a form of GOTO; using them makes code confusing and hard to maintain and understand.',
},
{
selector: 'WithStatement',
message: '`with` is disallowed in strict mode because it makes code impossible to predict and optimize.',
},
],
'import/no-unresolved': ['error', {
commonjs: true,
caseSensitive: true,
caseSensitiveStrict: false,
ignore: [
'^/projects/',
'^three/addons/',
],
}],
'import/no-extraneous-dependencies': ['error', {
devDependencies: [
'test/**',
'tests/**',
'spec/**',
'**/__tests__/**',
'**/__mocks__/**',
'test.{js,jsx,cjs,mjs}',
'test-*.{js,jsx,cjs,mjs}',
'**/*{.,_}{test,spec}.{js,jsx}',
'**/jest.config.{js,cjs,mjs}',
'**/jest.setup.{js,cjs,mjs}',
'**/vue.config.{js,cjs,mjs}',
'**/webpack.config.{js,cjs,mjs}',
'**/webpack.config.*.{js,cjs,mjs}',
'**/rollup.config.{js,cjs,mjs}',
'**/rollup.config.*.{js,cjs,mjs}',
'**/gulpfile.{js,cjs,mjs}',
'**/gulpfile.*.{js,cjs,mjs}',
'**/Gruntfile{,.js,.cjs,.mjs}',
'**/protractor.conf.{js,cjs,mjs}',
'**/protractor.conf.*.{js,cjs,mjs}',
'**/karma.conf.{js,cjs,mjs}',
'**/.eslintrc.{js,cjs,mjs}',
'**/.vite.config.{js,cjs,mjs}',
'**/.vitest.config.{js,cjs,mjs}',
'/*.{js,cjs,mjs}',
],
optionalDependencies: true,
}],
'vue/max-attributes-per-line': ['error', {
singleline: { max: 3 },
multiline: { max: 1 },
}],
},
};