Vue .eslintrc.js
https://blog.csdn.net/weixin_33721344/article/details/88685833
Vue的Eslint配置檔案eslintrc.js說明與規則介紹
最近在跟著影片敲專案時,程式碼提示出現很多奇奇怪怪的錯誤提示,百度了一下是eslintrc.js檔案沒有配置相關命令,ESlint的語法檢測真的令人抓狂,現在總結一下這些命令的解釋
預設eslint規則:
程式碼末尾不能加分號 ;
程式碼中不能存在多行空行;
tab鍵不能使用,必須換成兩個空格;
程式碼中不能存在宣告瞭但未使用的變數;
最簡單的方法,關閉eslint檢測,其實很簡單,把 build/webpack.base.conf.js 配置檔案中的eslint rules註釋掉即可。
但不推薦這麼做,eslint檢測是有必要的,能保持良好的程式碼風格。
第二種方法就是把不符合自己習慣的規則去掉,找到配置檔案,名字以.eslintrc.*為名。
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
|
module.exports = { root: true , parser: 'babel-eslint' , parserOptions: { //設定"script"(預設)或"module"如果你的程式碼是在ECMAScript中的模組。 sourceType: 'module' }, env: { browser: true , }, // https://github.com/feross/standard/blob/master/RULES.md#javascript-standard-style extends: 'standard' , // required to lint *.vue files plugins: [ 'html' ], // add your custom rules here 'rules' : { // allow paren-less arrow functions 'arrow-parens' : 0, // allow async-await 'generator-star-spacing' : 0, // allow debugger during development 'no-debugger' : process.env.NODE_ENV === 'production' ? 2 : 0, "no-unused-vars" : [2, { // 允許宣告未使用變數 "vars" : "local" , // 引數不檢查 "args" : "none" }], // 關閉語句強制分號結尾 "semi" : [0], //key值前面是否要有空格 "key-spacing" : [0, { "singleLine" : { "beforeColon" : false , "afterColon" : true }, "multiLine" : { "beforeColon" : true , "afterColon" : true , "align" : "colon" }, //空行最多不能超過100行 "no-multiple-empty-lines" : [0, { "max" : 100}], //關閉禁止混用tab和空格 "no-mixed-spaces-and-tabs" : [0], //陣列第一個指定是否啟用這個規則,第二個指定幾個空格 "indent" :[1,2], } |
其中的rules就是配置規則的。
配置引數
1
2
3
|
rules: { "規則名" : [規則值, 規則配置] } |
規則值:
"off"或者0 //關閉規則關閉
"warn"或者1 //在開啟的規則作為警告(不影響退出程式碼)
"error"或者2 //把規則作為一個錯誤(退出程式碼觸發時為1)
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
|
"no-alert" : 0, //禁止使用alert confirm prompt "no-array-constructor" : 2, //禁止使用陣列構造器 "no-bitwise" : 0, //禁止使用按位運算子 "no-caller" : 1, //禁止使用arguments.caller或arguments.callee "no-catch-shadow" : 2, //禁止catch子句引數與外部作用域變數同名 "no-class-assign" : 2, //禁止給類賦值 "no-cond-assign" : 2, //禁止在條件表示式中使用賦值語句 "no-console" : 2, //禁止使用console "no-const-assign" : 2, //禁止修改const宣告的變數 "no-constant-condition" : 2, //禁止在條件中使用常量表示式 if(true) if(1) "no-continue" : 0, //禁止使用continue "no-control-regex" : 2, //禁止在正規表示式中使用控制字元 "no-debugger" : 2, //禁止使用debugger "no-delete-var" : 2, //不能對var宣告的變數使用delete運算子 "no-div-regex" : 1, //不能使用看起來像除法的正規表示式/=foo/ "no-dupe-keys" : 2, //在建立物件字面量時不允許鍵重複 {a:1,a:1} "no-dupe-args" : 2, //函式引數不能重複 "no-duplicate-case" : 2, //switch中的case標籤不能重複 "no-else-return" : 2, //如果if語句裡面有return,後面不能跟else語句 "no-empty" : 2, //塊語句中的內容不能為空 "no-empty-character-class" : 2, //正規表示式中的[]內容不能為空 "no-empty-label" : 2, //禁止使用空label "no-eq-null" : 2, //禁止對null使用==或!=運算子 "no-eval" : 1, //禁止使用eval "no-ex-assign" : 2, //禁止給catch語句中的異常引數賦值 "no-extend-native" : 2, //禁止擴充套件native物件 "no-extra-bind" : 2, //禁止不必要的函式繫結 "no-extra-boolean-cast" : 2, //禁止不必要的bool轉換 "no-extra-parens" : 2, //禁止非必要的括號 "no-extra-semi" : 2, //禁止多餘的冒號 "no-fallthrough" : 1, //禁止switch穿透 "no-floating-decimal" : 2, //禁止省略浮點數中的0 .5 3. "no-func-assign" : 2, //禁止重複的函式宣告 "no-implicit-coercion" : 1, //禁止隱式轉換 "no-implied-eval" : 2, //禁止使用隱式eval "no-inline-comments" : 0, //禁止行內備註 "no-inner-declarations" : [2, "functions" ], //禁止在塊語句中使用宣告(變數或函式) "no-invalid-regexp" : 2, //禁止無效的正規表示式 "no-invalid-this" : 2, //禁止無效的this,只能用在構造器,類,物件字面量 "no-irregular-whitespace" : 2, //不能有不規則的空格 "no-iterator" : 2, //禁止使用__iterator__ 屬性 "no-label-var" : 2, //label名不能與var宣告的變數名相同 "no-labels" : 2, //禁止標籤宣告 "no-lone-blocks" : 2, //禁止不必要的巢狀塊 "no-lonely-if" : 2, //禁止else語句內只有if語句 "no-loop-func" : 1, //禁止在迴圈中使用函式(如果沒有引用外部變數不形成閉包就可以) "no-mixed-requires" : [0, false ], //宣告時不能混用宣告型別 "no-mixed-spaces-and-tabs" : [2, false ], //禁止混用tab和空格 "linebreak-style" : [0, "windows" ], //換行風格 "no-multi-spaces" : 1, //不能用多餘的空格 "no-multi-str" : 2, //字串不能用\換行 "no-multiple-empty-lines" : [1, { "max" : 2}], //空行最多不能超過2行 "no-native-reassign" : 2, //不能重寫native物件 "no-negated-in-lhs" : 2, //in 運算子的左邊不能有! "no-nested-ternary" : 0, //禁止使用巢狀的三目運算 "no-new" : 1, //禁止在使用new構造一個例項後不賦值 "no-new-func" : 1, //禁止使用new Function "no-new-object" : 2, //禁止使用new Object() "no-new-require" : 2, //禁止使用new require "no-new-wrappers" : 2, //禁止使用new建立包裝例項,new String new Boolean new Number "no-obj-calls" : 2, //不能呼叫內建的全域性物件,比如Math() JSON() "no-octal" : 2, //禁止使用八進位制數字 "no-octal-escape" : 2, //禁止使用八進位制轉義序列 "no-param-reassign" : 2, //禁止給引數重新賦值 "no-path-concat" : 0, //node中不能使用__dirname或__filename做路徑拼接 "no-plusplus" : 0, //禁止使用++,-- "no-process-env" : 0, //禁止使用process.env "no-process-exit" : 0, //禁止使用process.exit() "no-proto" : 2, //禁止使用__proto__屬性 "no-redeclare" : 2, //禁止重複宣告變數 "no-regex-spaces" : 2, //禁止在正規表示式字面量中使用多個空格 /foo bar/ "no-restricted-modules" : 0, //如果禁用了指定模組,使用就會報錯 "no-return-assign" : 1, //return 語句中不能有賦值表示式 "no-script-url" : 0, //禁止使用javascript:void(0) "no-self-compare" : 2, //不能比較自身 "no-sequences" : 0, //禁止使用逗號運算子 "no-shadow" : 2, //外部作用域中的變數不能與它所包含的作用域中的變數或引數同名 "no-shadow-restricted-names" : 2, //嚴格模式中規定的限制識別符號不能作為宣告時的變數名使用 "no-spaced-func" : 2, //函式呼叫時 函式名與()之間不能有空格 "no-sparse-arrays" : 2, //禁止稀疏陣列, [1,,2] "no-sync" : 0, //nodejs 禁止同步方法 "no-ternary" : 0, //禁止使用三目運算子 "no-trailing-spaces" : 1, //一行結束後面不要有空格 "no-this-before-super" : 0, //在呼叫super()之前不能使用this或super "no-throw-literal" : 2, //禁止丟擲字面量錯誤 throw "error"; "no-undef" : 1, //不能有未定義的變數 "no-undef-init" : 2, //變數初始化時不能直接給它賦值為undefined "no-undefined" : 2, //不能使用undefined "no-unexpected-multiline" : 2, //避免多行表示式 "no-underscore-dangle" : 1, //識別符號不能以_開頭或結尾 "no-unneeded-ternary" : 2, //禁止不必要的巢狀 var isYes = answer === 1 ? true : false; "no-unreachable" : 2, //不能有無法執行的程式碼 "no-unused-expressions" : 2, //禁止無用的表示式 "no-unused-vars" : [2, { "vars" : "all" , "args" : "after-used" }], //不能有宣告後未被使用的變數或引數 "no-use-before-define" : 2, //未定義前不能使用 "no-useless-call" : 2, //禁止不必要的call和apply "no-void" : 2, //禁用void運算子 "no-var" : 0, //禁用var,用let和const代替 "no-warning-comments" : [1, { "terms" : [ "todo" , "fixme" , "xxx" ], "location" : "start" }], //不能有警告備註 "no-with" : 2, //禁用with "array-bracket-spacing" : [2, "never" ], //是否允許非空陣列裡面有多餘的空格 "arrow-parens" : 0, //箭頭函式用小括號括起來 "arrow-spacing" : 0, //=>的前/後括號 "accessor-pairs" : 0, //在物件中使用getter/setter "block-scoped-var" : 0, //塊語句中使用var "brace-style" : [1, "1tbs" ], //大括號風格 "callback-return" : 1, //避免多次呼叫回撥什麼的 "camelcase" : 2, //強制駝峰法命名 "comma-dangle" : [2, "never" ], //物件字面量項尾不能有逗號 "comma-spacing" : 0, //逗號前後的空格 "comma-style" : [2, "last" ], //逗號風格,換行時在行首還是行尾 "complexity" : [0, 11], //迴圈複雜度 "computed-property-spacing" : [0, "never" ], //是否允許計算後的鍵名什麼的 "consistent-return" : 0, //return 後面是否允許省略 "consistent-this" : [2, "that" ], //this別名 "constructor-super" : 0, //非派生類不能呼叫super,派生類必須呼叫super "curly" : [2, "all" ], //必須使用 if(){} 中的{} "default-case" : 2, //switch語句最後必須有default "dot-location" : 0, //物件訪問符的位置,換行的時候在行首還是行尾 "dot-notation" : [0, { "allowKeywords" : true }], //避免不必要的方括號 "eol-last" : 0, //檔案以單一的換行符結束 "eqeqeq" : 2, //必須使用全等 "func-names" : 0, //函式表示式必須有名字 "func-style" : [0, "declaration" ], //函式風格,規定只能使用函式宣告/函式表示式 "generator-star-spacing" : 0, //生成器函式*的前後空格 "guard-for-in" : 0, //for in迴圈要用if語句過濾 "handle-callback-err" : 0, //nodejs 處理錯誤 "id-length" : 0, //變數名長度 "indent" : [2, 4], //縮排風格 "init-declarations" : 0, //宣告時必須賦初值 "key-spacing" : [0, { "beforeColon" : false , "afterColon" : true }], //物件字面量中冒號的前後空格 "lines-around-comment" : 0, //行前/行後備注 "max-depth" : [0, 4], //巢狀塊深度 "max-len" : [0, 80, 4], //字串最大長度 "max-nested-callbacks" : [0, 2], //回撥巢狀深度 "max-params" : [0, 3], //函式最多隻能有3個引數 "max-statements" : [0, 10], //函式內最多有幾個宣告 "new-cap" : 2, //函式名首行大寫必須使用new方式呼叫,首行小寫必須用不帶new方式呼叫 "new-parens" : 2, //new時必須加小括號 "newline-after-var" : 2, //變數宣告後是否需要空一行 "object-curly-spacing" : [0, "never" ], //大括號內是否允許不必要的空格 "object-shorthand" : 0, //強制物件字面量縮寫語法 "one-var" : 1, //連續宣告 "operator-assignment" : [0, "always" ], //賦值運算子 += -=什麼的 "operator-linebreak" : [2, "after" ], //換行時運算子在行尾還是行首 "padded-blocks" : 0, //塊語句內行首行尾是否要空行 "prefer-const" : 0, //首選const "prefer-spread" : 0, //首選展開運算 "prefer-reflect" : 0, //首選Reflect的方法 "quotes" : [1, "single" ], //引號型別 `` "" '' "quote-props" :[2, "always" ], //物件字面量中的屬性名是否強制雙引號 "radix" : 2, //parseInt必須指定第二個引數 "id-match" : 0, //命名檢測 "require-yield" : 0, //生成器函式必須有yield "semi" : [2, "always" ], //語句強制分號結尾 "semi-spacing" : [0, { "before" : false , "after" : true }], //分號前後空格 "sort-vars" : 0, //變數宣告時排序 "space-after-keywords" : [0, "always" ], //關鍵字後面是否要空一格 "space-before-blocks" : [0, "always" ], //不以新行開始的塊{前面要不要有空格 "space-before-function-paren" : [0, "always" ], //函式定義時括號前面要不要有空格 "space-in-parens" : [0, "never" ], //小括號裡面要不要有空格 "space-infix-ops" : 0, //中綴運算子周圍要不要有空格 "space-return-throw-case" : 2, //return throw case後面要不要加空格 "space-unary-ops" : [0, { "words" : true , "nonwords" : false }], //一元運算子的前/後要不要加空格 "spaced-comment" : 0, //註釋風格要不要有空格什麼的 "strict" : 2, //使用嚴格模式 "use-isnan" : 2, //禁止比較時使用NaN,只能用isNaN() "valid-jsdoc" : 0, //jsdoc規則 "valid-typeof" : 2, //必須使用合法的typeof的值 "vars-on-top" : 2, //var必須放在作用域頂部 "wrap-iife" : [2, "inside" ], //立即執行函式表示式的小括號風格 "wrap-regex" : 0, //正規表示式字面量用小括號包起來 "yoda" : [2, "never" ] //禁止尤達條件 |