Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 5750d7a

Browse files
ota-meshiMichaela Robosova
and
Michaela Robosova
authored
Add vue/no-unused-properties rule (from #871) (#1145)
* New: add vue/no-unused-properties rule (#631) * Update * Updated to trace function calls. Co-authored-by: Michaela Robosova <robosova.michaela@seznam.cz>
1 parent 0a5aeaf commit 5750d7a

File tree

6 files changed

+1920
-0
lines changed

6 files changed

+1920
-0
lines changed

‎docs/rules/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,7 @@ For example:
295295
| [vue/no-template-target-blank](./no-template-target-blank.md) | disallow target="_blank" attribute without rel="noopener noreferrer" | |
296296
| [vue/no-unregistered-components](./no-unregistered-components.md) | disallow using components that are not registered inside templates | |
297297
| [vue/no-unsupported-features](./no-unsupported-features.md) | disallow unsupported Vue.js syntax on the specified version | :wrench: |
298+
| [vue/no-unused-properties](./no-unused-properties.md) | disallow unused properties | |
298299
| [vue/object-curly-spacing](./object-curly-spacing.md) | enforce consistent spacing inside braces | :wrench: |
299300
| [vue/padding-line-between-blocks](./padding-line-between-blocks.md) | require or disallow padding lines between blocks | :wrench: |
300301
| [vue/prefer-template](./prefer-template.md) | require template literals instead of string concatenation | :wrench: |

‎docs/rules/no-unused-properties.md

Lines changed: 164 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,164 @@
1+
---
2+
pageClass: rule-details
3+
sidebarDepth: 0
4+
title: vue/no-unused-properties
5+
description: disallow unused properties
6+
---
7+
# vue/no-unused-properties
8+
> disallow unused properties
9+
10+
## :book: Rule Details
11+
12+
This rule is aimed at eliminating unused properties.
13+
14+
::: warning Note
15+
This rule cannot be checked for use in other components (e.g. `mixins`, Property access via `$refs`) and use in places where the scope cannot be determined.
16+
:::
17+
18+
<eslint-code-block :rules="{'vue/no-unused-properties': ['error']}">
19+
20+
```vue
21+
<!-- ✓ GOOD -->
22+
<template>
23+
<div>{{ count }}</div>
24+
</template>
25+
<script>
26+
export default {
27+
props: ['count']
28+
}
29+
</script>
30+
```
31+
32+
</eslint-code-block>
33+
34+
<eslint-code-block :rules="{'vue/no-unused-properties': ['error']}">
35+
36+
```vue
37+
<!-- ✗ BAD (`count` property not used) -->
38+
<template>
39+
<div>{{ cnt }}</div>
40+
</template>
41+
<script>
42+
export default {
43+
props: ['count']
44+
}
45+
</script>
46+
```
47+
48+
</eslint-code-block>
49+
50+
## :wrench: Options
51+
52+
```json
53+
{
54+
"vue/no-unused-properties": ["error", {
55+
"groups": ["props"]
56+
}]
57+
}
58+
```
59+
60+
- `"groups"` (`string[]`) Array of groups to search for properties. Default is `["props"]`. The value of the array is some of the following strings:
61+
- `"props"`
62+
- `"data"`
63+
- `"computed"`
64+
- `"methods"`
65+
- `"setup"`
66+
67+
### `"groups": ["props", "data"]`
68+
69+
<eslint-code-block :rules="{'vue/no-unused-properties': ['error', {groups: ['props', 'data']}]}">
70+
71+
```vue
72+
<!-- ✓ GOOD -->
73+
<script>
74+
export default {
75+
data() {
76+
return {
77+
count: null
78+
}
79+
},
80+
created() {
81+
this.count = 2
82+
}
83+
}
84+
</script>
85+
```
86+
87+
</eslint-code-block>
88+
89+
<eslint-code-block :rules="{'vue/no-unused-properties': ['error', {groups: ['props', 'data']}]}">
90+
91+
```vue
92+
<!-- ✓ BAD (`count` data not used) -->
93+
<script>
94+
export default {
95+
data() {
96+
return {
97+
count: null
98+
}
99+
},
100+
created() {
101+
this.cnt = 2
102+
}
103+
}
104+
</script>
105+
```
106+
107+
</eslint-code-block>
108+
109+
### `"groups": ["props", "computed"]`
110+
111+
<eslint-code-block :rules="{'vue/no-unused-properties': ['error', {groups: ['props', 'computed']}]}">
112+
113+
```vue
114+
<!-- ✓ GOOD -->
115+
<template>
116+
<p>{{ reversedMessage }}</p>
117+
</template>
118+
<script>
119+
export default {
120+
data() {
121+
return {
122+
message: 'Hello'
123+
}
124+
},
125+
computed: {
126+
reversedMessage() {
127+
return this.message.split('').reverse().join('')
128+
}
129+
}
130+
}
131+
</script>
132+
```
133+
134+
</eslint-code-block>
135+
136+
<eslint-code-block :rules="{'vue/no-unused-properties': ['error', {groups: ['props', 'computed']}]}">
137+
138+
```vue
139+
<!-- ✓ BAD (`reversedMessage` computed property not used) -->
140+
<template>
141+
<p>{{ message }}</p>
142+
</template>
143+
<script>
144+
export default {
145+
data() {
146+
return {
147+
message: 'Hello'
148+
}
149+
},
150+
computed: {
151+
reversedMessage() {
152+
return this.message.split('').reverse().join('')
153+
}
154+
}
155+
}
156+
</script>
157+
```
158+
159+
</eslint-code-block>
160+
161+
## :mag: Implementation
162+
163+
- [Rule source](https://github.com/vuejs/eslint-plugin-vue/blob/master/lib/rules/no-unused-properties.js)
164+
- [Test source](https://github.com/vuejs/eslint-plugin-vue/blob/master/tests/lib/rules/no-unused-properties.js)

‎lib/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ module.exports = {
8484
'no-unregistered-components': require('./rules/no-unregistered-components'),
8585
'no-unsupported-features': require('./rules/no-unsupported-features'),
8686
'no-unused-components': require('./rules/no-unused-components'),
87+
'no-unused-properties': require('./rules/no-unused-properties'),
8788
'no-unused-vars': require('./rules/no-unused-vars'),
8889
'no-use-v-if-with-v-for': require('./rules/no-use-v-if-with-v-for'),
8990
'no-v-html': require('./rules/no-v-html'),

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /