-
Notifications
You must be signed in to change notification settings - Fork 1
/
.eslintrc.js
116 lines (116 loc) · 6.06 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
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
module.exports = {
'root': true,
'parserOptions': {
// 'parser': 'babel-eslint',
'ecmaVersion': 8,
'sourceType': 'module'
},
'env': {
'browser': true
},
'globals': {
'jsdom': true,
'Promise': true
},
'plugins': [
'vue'
],
'extends': 'plugin:vue/recommended',
'rules': {
'arrow-parens': ['off'],
'brace-style': ['error', '1tbs', { 'allowSingleLine': true }],
'comma-dangle': ['error', 'never'],
'comma-spacing': ['error', { 'before': false, 'after': true }],
'comma-style': ['error', 'last'],
'curly': ['error'],
// allow async-await
'generator-star-spacing': ['off'],
// 2 space indentation to match .editorconfig
'indent': ['error', 2, { 'SwitchCase': 1 }],
'keyword-spacing': ['error', { 'before': true, 'after': true }],
// allow debugger during development
'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'no-multi-spaces': ['error'],
'no-unused-vars': ['error'],
// Only allow let and const, no var
'no-var': ['error'],
'object-curly-spacing': ['error', 'always'],
'one-var': ['error', 'never'],
'quotes': ['error', 'single'],
'semi': ['error', 'always'],
'space-before-blocks': ['error', 'always'],
'space-before-function-paren': ['error', 'always'],
'space-in-parens': ['error', 'never'],
'space-infix-ops': ['error'],
'spaced-comment': ['error', 'always'],
// Vue Linter Options
'vue/attribute-hyphenation': ['error', 'always'],
'vue/attributes-order': ['error', {
'order': [
'LIST_RENDERING', // 'v-for item in items'
'CONDITIONALS', // 'v-if', 'v-else-if', 'v-else', 'v-show', 'v-cloak'
'RENDER_MODIFIERS', // 'v-once', 'v-pre'
'CONTENT', // 'v-text', 'v-html'
'BINDING', // 'v-model', 'v-bind', ':property="foo"'
'DEFINITION', // 'is'
'GLOBAL', // 'id'
'OTHER_ATTR', // 'customProp="foo"', 'class', 'type', 'value' etc
'EVENTS', // '@click="functionCall"', 'v-on="event"'
'UNIQUE' // 'slot', 'key', 'ref'
]
}],
'vue/html-closing-bracket-newline':
['error', {
'singleline': 'never',
'multiline': 'always'
}],
'vue/html-closing-bracket-spacing':
['error', {
'startTag': 'never',
'endTag': 'never',
'selfClosingTag': 'always'
}],
'vue/html-indent': ['error', 2, {
'attribute': 1,
'closeBracket': 0
}],
'vue/html-self-closing': ['error', {
'html': {
'void': 'always',
'normal': 'never',
'component': 'never'
}
}],
'vue/max-attributes-per-line': ['error', {
'singleline': 3,
'multiline': {
'max': 1,
'allowFirstLine': false
}
}],
'vue/name-property-casing': ['error', 'PascalCase'],
'vue/order-in-components': ['error', { 'order': [
'el',
'name',
['template', 'render'],
'parent',
'functional',
['delimiters', 'comments'],
['components', 'directives'],
'extends',
'mixins',
'inheritAttrs',
'model',
['props', 'propsData'],
'data',
'methods',
'computed',
'filters',
'watch',
'LIFECYCLE_HOOKS',
'renderError'
]}],
'vue/prop-name-casing': ['error', 'camelCase']
}
};