File tree Expand file tree Collapse file tree 5 files changed +99
-0
lines changed Expand file tree Collapse file tree 5 files changed +99
-0
lines changed Original file line number Diff line number Diff line change @@ -294,6 +294,7 @@ For example:
294
294
| [ vue/no-unsupported-features] ( ./no-unsupported-features.md ) | disallow unsupported Vue.js syntax on the specified version | :wrench : |
295
295
| [ vue/object-curly-spacing] ( ./object-curly-spacing.md ) | enforce consistent spacing inside braces | :wrench : |
296
296
| [ vue/padding-line-between-blocks] ( ./padding-line-between-blocks.md ) | require or disallow padding lines between blocks | :wrench : |
297
+ | [ vue/prefer-template] ( ./prefer-template.md ) | require template literals instead of string concatenation | :wrench : |
297
298
| [ vue/require-direct-export] ( ./require-direct-export.md ) | require the component to be directly exported | |
298
299
| [ vue/require-explicit-emits] ( ./require-explicit-emits.md ) | require ` emits ` option with name triggered by ` $emit() ` | |
299
300
| [ vue/require-name-property] ( ./require-name-property.md ) | require a name property in Vue components | |
Original file line number Diff line number Diff line change
1
+ ---
2
+ pageClass : rule-details
3
+ sidebarDepth : 0
4
+ title : vue/prefer-template
5
+ description : require template literals instead of string concatenation
6
+ ---
7
+ # vue/prefer-template
8
+ > require template literals instead of string concatenation
9
+
10
+ - :wrench : The ` --fix ` option on the [ command line] ( https://eslint.org/docs/user-guide/command-line-interface#fixing-problems ) can automatically fix some of the problems reported by this rule.
11
+
12
+ This rule is the same rule as core [ prefer-template] rule but it applies to the expressions in ` <template> ` .
13
+
14
+ ## :books : Further reading
15
+
16
+ - [ prefer-template]
17
+
18
+ [ prefer-template ] : https://eslint.org/docs/rules/prefer-template
19
+
20
+ ## :mag : Implementation
21
+
22
+ - [ Rule source] ( https://github.com/vuejs/eslint-plugin-vue/blob/master/lib/rules/prefer-template.js )
23
+ - [ Test source] ( https://github.com/vuejs/eslint-plugin-vue/blob/master/tests/lib/rules/prefer-template.js )
Original file line number Diff line number Diff line change @@ -91,6 +91,7 @@ module.exports = {
91
91
'object-curly-spacing' : require ( './rules/object-curly-spacing' ) ,
92
92
'order-in-components' : require ( './rules/order-in-components' ) ,
93
93
'padding-line-between-blocks' : require ( './rules/padding-line-between-blocks' ) ,
94
+ 'prefer-template' : require ( './rules/prefer-template' ) ,
94
95
'prop-name-casing' : require ( './rules/prop-name-casing' ) ,
95
96
'require-component-is' : require ( './rules/require-component-is' ) ,
96
97
'require-default-prop' : require ( './rules/require-default-prop' ) ,
Original file line number Diff line number Diff line change
1
+ /**
2
+ * @author Yosuke Ota
3
+ */
4
+ 'use strict'
5
+
6
+ const { wrapCoreRule } = require ( '../utils' )
7
+
8
+ // eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories
9
+ module . exports = wrapCoreRule (
10
+ require ( 'eslint/lib/rules/prefer-template' )
11
+ )
Original file line number Diff line number Diff line change
1
+ /**
2
+ * @author Yosuke Ota
3
+ */
4
+ 'use strict'
5
+
6
+ const RuleTester = require ( 'eslint' ) . RuleTester
7
+ const rule = require ( '../../../lib/rules/prefer-template' )
8
+
9
+ const tester = new RuleTester ( {
10
+ parser : require . resolve ( 'vue-eslint-parser' ) ,
11
+ parserOptions : { ecmaVersion : 2020 }
12
+ } )
13
+
14
+ tester . run ( 'prefer-template' , rule , {
15
+ valid : [
16
+ `
17
+ <template>
18
+ <div :class="[\`foo-\${bar}\`]" />
19
+ </template>
20
+ ` ,
21
+ `
22
+ <template>
23
+ <div :[\`foo\${bar}\`]="value" />
24
+ </template>
25
+ `
26
+ ] ,
27
+ invalid : [
28
+ {
29
+ code : `
30
+ <template>
31
+ <div :class="['foo-' + bar]" />
32
+ </template>
33
+ ` ,
34
+ output : `
35
+ <template>
36
+ <div :class="[\`foo-\${ bar}\`]" />
37
+ </template>
38
+ ` ,
39
+ errors : [
40
+ {
41
+ message : 'Unexpected string concatenation.' ,
42
+ line : 3
43
+ }
44
+ ]
45
+ } ,
46
+ {
47
+ code : `
48
+ <template>
49
+ <div :['foo'+bar]="value" />
50
+ </template>` ,
51
+ output : `
52
+ <template>
53
+ <div :[\`foo\${bar}\`]="value" />
54
+ </template>` ,
55
+ errors : [
56
+ {
57
+ message : 'Unexpected string concatenation.' ,
58
+ line : 3
59
+ }
60
+ ]
61
+ }
62
+ ]
63
+ } )
You can’t perform that action at this time.
0 commit comments