Skip to content

Commit ec94d6a

Browse files
authored
Change document style for new rules added & Fixed new rule test casesto work with eslint v6 (#1012)
* Change document style for new rules added & Fixed new rule test cases to work with eslint v6 * Fixed valid-v-bind-sync * Run update script * Fixed test cases
1 parent 603a6e1 commit ec94d6a

21 files changed

+123
-31
lines changed

docs/rules/README.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@ For example:
145145
| [vue/brace-style](./brace-style.md) | enforce consistent brace style for blocks | :wrench: |
146146
| [vue/camelcase](./camelcase.md) | enforce camelcase naming convention | |
147147
| [vue/comma-dangle](./comma-dangle.md) | require or disallow trailing commas | :wrench: |
148+
| [vue/component-definition-name-casing](./component-definition-name-casing.md) | enforce specific casing for component definition name | :wrench: |
148149
| [vue/component-name-in-template-casing](./component-name-in-template-casing.md) | enforce specific casing for the component naming style in template | :wrench: |
149150
| [vue/component-tags-order](./component-tags-order.md) | enforce order of component top-level elements | |
150151
| [vue/dot-location](./dot-location.md) | enforce consistent newlines before and after dots | :wrench: |
@@ -153,8 +154,8 @@ For example:
153154
| [vue/keyword-spacing](./keyword-spacing.md) | enforce consistent spacing before and after keywords | :wrench: |
154155
| [vue/match-component-file-name](./match-component-file-name.md) | require component name property to match its file name | |
155156
| [vue/no-boolean-default](./no-boolean-default.md) | disallow boolean defaults | :wrench: |
156-
| [vue/no-deprecated-slot-attribute](./no-deprecated-slot-attribute.md) | disallow deprecated `slot` attribute (in Vue.js 2.6.0+) | :wrench: |
157157
| [vue/no-deprecated-scope-attribute](./no-deprecated-scope-attribute.md) | disallow deprecated `scope` attribute (in Vue.js 2.5.0+) | :wrench: |
158+
| [vue/no-deprecated-slot-attribute](./no-deprecated-slot-attribute.md) | disallow deprecated `slot` attribute (in Vue.js 2.6.0+) | :wrench: |
158159
| [vue/no-deprecated-slot-scope-attribute](./no-deprecated-slot-scope-attribute.md) | disallow deprecated `slot-scope` attribute (in Vue.js 2.6.0+) | :wrench: |
159160
| [vue/no-empty-pattern](./no-empty-pattern.md) | disallow empty destructuring patterns | |
160161
| [vue/no-reserved-component-names](./no-reserved-component-names.md) | disallow the use of reserved names in component definitions | |
+92-15
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,124 @@
1-
# enforce specific casing for component definition name (vue/component-definition-name-casing)
1+
---
2+
pageClass: rule-details
3+
sidebarDepth: 0
4+
title: vue/component-definition-name-casing
5+
description: enforce specific casing for component definition name
6+
---
7+
# vue/component-definition-name-casing
8+
> enforce specific casing for component definition name
29
310
- :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.
411

12+
## :book: Rule Details
13+
514
Define a style for component definition name casing for consistency purposes.
615

7-
## :book: Rule Details
16+
## :wrench: Options
817

9-
:+1: Examples of **correct** code for `PascalCase`:
18+
Default casing is set to `PascalCase`.
1019

11-
```js
20+
```json
21+
{
22+
"vue/component-definition-name-casing": ["error", "PascalCase" | "kebab-case"]
23+
}
24+
```
25+
26+
- `"PascalCase"` (default) ... enforce component definition names to pascal case.
27+
- `"kebab-case"` ... enforce component definition names to kebab case.
28+
29+
### `"PascalCase" (default)
30+
31+
<eslint-code-block fix :rules="{'vue/component-definition-name-casing': ['error']}">
32+
33+
```vue
34+
<script>
1235
export default {
36+
/* ✓ GOOD */
1337
name: 'MyComponent'
1438
}
39+
</script>
1540
```
41+
42+
</eslint-code-block>
43+
44+
<eslint-code-block fix :rules="{'vue/component-definition-name-casing': ['error']}">
45+
46+
```vue
47+
<script>
48+
export default {
49+
/* ✗ BAD */
50+
name: 'my-component'
51+
}
52+
</script>
53+
```
54+
55+
</eslint-code-block>
56+
57+
<eslint-code-block fix language="javascript" filename="src/MyComponent.js" :rules="{'vue/component-definition-name-casing': ['error']}">
58+
1659
```js
60+
/* ✓ GOOD */
1761
Vue.component('MyComponent', {
1862

63+
})
64+
65+
/* ✗ BAD */
66+
Vue.component('my-component', {
67+
1968
})
2069
```
2170

22-
:+1: Examples of **correct** code for `kebab-case`:
71+
</eslint-code-block>
2372

24-
```js
73+
### `"kebab-case"
74+
75+
<eslint-code-block fix :rules="{'vue/component-definition-name-casing': ['error', 'kebab-case']}">
76+
77+
```vue
78+
<script>
2579
export default {
80+
/* ✓ GOOD */
2681
name: 'my-component'
2782
}
83+
</script>
2884
```
85+
86+
</eslint-code-block>
87+
88+
<eslint-code-block fix :rules="{'vue/component-definition-name-casing': ['error', 'kebab-case']}">
89+
90+
```vue
91+
<script>
92+
export default {
93+
/* ✗ BAD */
94+
name: 'MyComponent'
95+
}
96+
</script>
97+
```
98+
99+
</eslint-code-block>
100+
101+
<eslint-code-block fix language="javascript" filename="src/MyComponent.js" :rules="{'vue/component-definition-name-casing': ['error', 'kebab-case']}">
102+
29103
```js
104+
/* ✓ GOOD */
30105
Vue.component('my-component', {
31106

107+
})
108+
109+
/* ✗ BAD */
110+
Vue.component('MyComponent', {
111+
32112
})
33113
```
34114

35-
## :wrench: Options
115+
</eslint-code-block>
36116

37-
Default casing is set to `PascalCase`.
117+
## :books: Further reading
38118

39-
```json
40-
{
41-
"vue/component-definition-name-casing": ["error", "PascalCase|kebab-case"]
42-
}
43-
```
119+
- [Style guide - Component name casing in JS/JSX](https://vuejs.org/v2/style-guide/#Component-name-casing-in-JS-JSX-strongly-recommended)
44120

45-
## Related links
121+
## :mag: Implementation
46122

47-
- [Style guide - Component name casing in JS/JSX](https://vuejs.org/v2/style-guide/#Component-name-casing-in-JS-JSX-strongly-recommended)
123+
- [Rule source](https://github.com/vuejs/eslint-plugin-vue/blob/master/lib/rules/component-definition-name-casing.js)
124+
- [Test source](https://github.com/vuejs/eslint-plugin-vue/blob/master/tests/lib/rules/component-definition-name-casing.js)

docs/rules/name-property-casing.md

-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ description: enforce specific casing for the name property in Vue components
99
1010
- :gear: This rule is included in `"plugin:vue/strongly-recommended"` and `"plugin:vue/recommended"`.
1111
- :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.
12-
- :warning: This rule was **deprecated** and replaced by [vue/component-definition-name-casing](component-definition-name-casing.md) rule.
1312

1413
## :book: Rule Details
1514

docs/rules/no-reserved-component-names.md

+4
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ export default {
2424

2525
</eslint-code-block>
2626

27+
## :wrench: Options
28+
29+
Nothing.
30+
2731
## :books: Further reading
2832

2933
- [List of html elements](https://developer.mozilla.org/en-US/docs/Web/HTML/Element)

lib/index.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ module.exports = {
1616
'camelcase': require('./rules/camelcase'),
1717
'comma-dangle': require('./rules/comma-dangle'),
1818
'comment-directive': require('./rules/comment-directive'),
19+
'component-definition-name-casing': require('./rules/component-definition-name-casing'),
1920
'component-name-in-template-casing': require('./rules/component-name-in-template-casing'),
2021
'component-tags-order': require('./rules/component-tags-order'),
2122
'dot-location': require('./rules/dot-location'),
@@ -37,8 +38,8 @@ module.exports = {
3738
'no-async-in-computed-properties': require('./rules/no-async-in-computed-properties'),
3839
'no-boolean-default': require('./rules/no-boolean-default'),
3940
'no-confusing-v-for-v-if': require('./rules/no-confusing-v-for-v-if'),
40-
'no-deprecated-slot-attribute': require('./rules/no-deprecated-slot-attribute'),
4141
'no-deprecated-scope-attribute': require('./rules/no-deprecated-scope-attribute'),
42+
'no-deprecated-slot-attribute': require('./rules/no-deprecated-slot-attribute'),
4243
'no-deprecated-slot-scope-attribute': require('./rules/no-deprecated-slot-scope-attribute'),
4344
'no-dupe-keys': require('./rules/no-dupe-keys'),
4445
'no-duplicate-attributes': require('./rules/no-duplicate-attributes'),

lib/rules/component-definition-name-casing.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@ module.exports = {
1818
docs: {
1919
description: 'enforce specific casing for component definition name',
2020
category: undefined,
21-
url: 'https://github.com/vuejs/eslint-plugin-vue/blob/v5.0.0-beta.5/docs/rules/component-definition-name-casing.md'
21+
// TODO Change with major version.
22+
// category: 'strongly-recommended',
23+
url: 'https://eslint.vuejs.org/rules/component-definition-name-casing.html'
2224
},
2325
fixable: 'code', // or "code" or "whitespace"
2426
schema: [

lib/rules/component-tags-order.js

+2
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ module.exports = {
2222
docs: {
2323
description: 'enforce order of component top-level elements',
2424
category: undefined,
25+
// TODO Change with major version.
26+
// category: 'recommended',
2527
url: 'https://eslint.vuejs.org/rules/component-tags-order.html'
2628
},
2729
fixable: null,

lib/rules/name-property-casing.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ module.exports = {
2020
category: 'strongly-recommended',
2121
url: 'https://eslint.vuejs.org/rules/name-property-casing.html'
2222
},
23-
deprecated: true,
24-
replacedBy: ['component-definition-name-casing'],
23+
// deprecated: true, // TODO Change with major version.
24+
// replacedBy: ['component-definition-name-casing'], // TODO Change with major version.
2525
fixable: 'code', // or "code" or "whitespace"
2626
schema: [
2727
{

lib/rules/v-slot-style.js

+2
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@ module.exports = {
7878
docs: {
7979
description: 'enforce `v-slot` directive style',
8080
category: undefined, // strongly-recommended
81+
// TODO Change with major version.
82+
// category: 'strongly-recommended',
8183
url: 'https://eslint.vuejs.org/rules/v-slot-style.html'
8284
},
8385
fixable: 'code',

lib/rules/valid-v-bind-sync.js

+2
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ module.exports = {
5353
docs: {
5454
description: 'enforce valid `.sync` modifier on `v-bind` directives',
5555
category: undefined,
56+
// TODO Change with major version.
57+
// category: 'essential',
5658
url: 'https://eslint.vuejs.org/rules/valid-v-bind-sync.html'
5759
},
5860
fixable: null,

lib/rules/valid-v-slot.js

+2
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,8 @@ module.exports = {
143143
docs: {
144144
description: 'enforce valid `v-slot` directives',
145145
category: undefined, // essential
146+
// TODO Change with major version.
147+
// category: 'essential',
146148
url: 'https://eslint.vuejs.org/rules/valid-v-slot.html'
147149
},
148150
fixable: null,

tests/lib/rules/component-definition-name-casing.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -291,7 +291,7 @@ ruleTester.run('component-definition-name-casing', rule, {
291291
code: `(Vue as VueConstructor<Vue>).component('foo-bar', component)`,
292292
output: `(Vue as VueConstructor<Vue>).component('FooBar', component)`,
293293
parserOptions,
294-
parser: 'typescript-eslint-parser',
294+
parser: require.resolve('@typescript-eslint/parser'),
295295
errors: [{
296296
message: 'Property name "foo-bar" is not PascalCase.',
297297
type: 'Literal',

tests/lib/rules/no-deprecated-slot-attribute.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ const RuleTester = require('eslint').RuleTester
44
const rule = require('../../../lib/rules/no-deprecated-slot-attribute.js')
55

66
const tester = new RuleTester({
7-
parser: 'vue-eslint-parser',
7+
parser: require.resolve('vue-eslint-parser'),
88
parserOptions: {
99
ecmaVersion: 2015
1010
}

tests/lib/rules/no-deprecated-slot-scope-attribute.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ const RuleTester = require('eslint').RuleTester
44
const rule = require('../../../lib/rules/no-deprecated-slot-scope-attribute')
55

66
const tester = new RuleTester({
7-
parser: 'vue-eslint-parser',
7+
parser: require.resolve('vue-eslint-parser'),
88
parserOptions: {
99
ecmaVersion: 2015
1010
}

tests/lib/rules/no-static-inline-styles.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ const RuleTester = require('eslint').RuleTester
88
const rule = require('../../../lib/rules/no-static-inline-styles')
99

1010
const tester = new RuleTester({
11-
parser: 'vue-eslint-parser',
11+
parser: require.resolve('vue-eslint-parser'),
1212
parserOptions: {
1313
ecmaVersion: 2019
1414
}

tests/lib/rules/no-unsupported-features.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ const RuleTester = require('eslint').RuleTester
1111
const rule = require('../../../lib/rules/no-unsupported-features')
1212

1313
const tester = new RuleTester({
14-
parser: 'vue-eslint-parser',
14+
parser: require.resolve('vue-eslint-parser'),
1515
parserOptions: {
1616
ecmaVersion: 2019
1717
}

tests/lib/rules/no-unsupported-features/dynamic-directive-arguments.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ const utils = require('./utils')
1010

1111
const buildOptions = utils.optionsBuilder('dynamic-directive-arguments', '^2.5.0')
1212
const tester = new RuleTester({
13-
parser: 'vue-eslint-parser',
13+
parser: require.resolve('vue-eslint-parser'),
1414
parserOptions: {
1515
ecmaVersion: 2019
1616
}

tests/lib/rules/no-unsupported-features/slot-scope-attribute.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ const utils = require('./utils')
1010

1111
const buildOptions = utils.optionsBuilder('slot-scope-attribute', '^2.4.0')
1212
const tester = new RuleTester({
13-
parser: 'vue-eslint-parser',
13+
parser: require.resolve('vue-eslint-parser'),
1414
parserOptions: {
1515
ecmaVersion: 2019
1616
}

tests/lib/rules/no-unsupported-features/v-bind-prop-modifier-shorthand.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ const utils = require('./utils')
1010

1111
const buildOptions = utils.optionsBuilder('v-bind-prop-modifier-shorthand', '^2.6.0')
1212
const tester = new RuleTester({
13-
parser: 'vue-eslint-parser',
13+
parser: require.resolve('vue-eslint-parser'),
1414
parserOptions: {
1515
ecmaVersion: 2019
1616
}

tests/lib/rules/no-unsupported-features/v-slot.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ const utils = require('./utils')
1010

1111
const buildOptions = utils.optionsBuilder('v-slot', '^2.5.0')
1212
const tester = new RuleTester({
13-
parser: 'vue-eslint-parser',
13+
parser: require.resolve('vue-eslint-parser'),
1414
parserOptions: {
1515
ecmaVersion: 2019
1616
}

tests/lib/rules/valid-v-bind-sync.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ const rule = require('../../../lib/rules/valid-v-bind-sync')
1515
// ------------------------------------------------------------------------------
1616

1717
const tester = new RuleTester({
18-
parser: 'vue-eslint-parser',
18+
parser: require.resolve('vue-eslint-parser'),
1919
parserOptions: { ecmaVersion: 2015 }
2020
})
2121

0 commit comments

Comments
 (0)