Skip to content

Commit 598af8b

Browse files
committed
⭐️New: Add vue/camelcase rule
1 parent 9c49dcc commit 598af8b

File tree

5 files changed

+96
-0
lines changed

5 files changed

+96
-0
lines changed

docs/rules/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ For example:
140140
| Rule ID | Description | |
141141
|:--------|:------------|:---|
142142
| [vue/array-bracket-spacing](./array-bracket-spacing.md) | enforce consistent spacing inside array brackets | :wrench: |
143+
| [vue/camelcase](./camelcase.md) | enforce camelcase naming convention | |
143144
| [vue/component-name-in-template-casing](./component-name-in-template-casing.md) | enforce specific casing for the component naming style in template | :wrench: |
144145
| [vue/eqeqeq](./eqeqeq.md) | require the use of `===` and `!==` | :wrench: |
145146
| [vue/key-spacing](./key-spacing.md) | enforce consistent spacing between keys and values in object literal properties | :wrench: |

docs/rules/camelcase.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
---
2+
pageClass: rule-details
3+
sidebarDepth: 0
4+
title: vue/camelcase
5+
description: enforce camelcase naming convention
6+
---
7+
# vue/camelcase
8+
> enforce camelcase naming convention
9+
10+
This rule is the same rule as core [camelcase] rule but it applies to the expressions in `<template>`.
11+
12+
## :books: Further reading
13+
14+
- [camelcase]
15+
16+
[camelcase]: https://eslint.org/docs/rules/camelcase
17+
18+
## :mag: Implementation
19+
20+
- [Rule source](https://github.com/vuejs/eslint-plugin-vue/blob/master/lib/rules/camelcase.js)
21+
- [Test source](https://github.com/vuejs/eslint-plugin-vue/blob/master/tests/lib/rules/camelcase.js)

lib/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ module.exports = {
1010
'array-bracket-spacing': require('./rules/array-bracket-spacing'),
1111
'attribute-hyphenation': require('./rules/attribute-hyphenation'),
1212
'attributes-order': require('./rules/attributes-order'),
13+
'camelcase': require('./rules/camelcase'),
1314
'comment-directive': require('./rules/comment-directive'),
1415
'component-name-in-template-casing': require('./rules/component-name-in-template-casing'),
1516
'eqeqeq': require('./rules/eqeqeq'),

lib/rules/camelcase.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
/**
2+
* @author Yosuke Ota
3+
*/
4+
'use strict'
5+
6+
const { wrapCoreRule } = require('../utils')
7+
8+
// eslint-disable-next-line
9+
module.exports = wrapCoreRule(require('eslint/lib/rules/camelcase'))

tests/lib/rules/camelcase.js

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
/**
2+
* @author Yosuke Ota
3+
*/
4+
'use strict'
5+
6+
const RuleTester = require('eslint').RuleTester
7+
const rule = require('../../../lib/rules/camelcase')
8+
9+
const tester = new RuleTester({
10+
parser: 'vue-eslint-parser',
11+
parserOptions: { ecmaVersion: 2015 }
12+
})
13+
14+
tester.run('camelcase', rule, {
15+
valid: [
16+
`<template>
17+
<div :attr="{ myPref: 1 }" />
18+
</template>`,
19+
{
20+
code: `
21+
<template>
22+
<div :attr="{ my_pref: 1 }" />
23+
</template>`,
24+
options: [{ allow: ['my_'] }]
25+
},
26+
{
27+
code: `
28+
<template>
29+
<div @click="($event) => {
30+
const { my_pref } = $event
31+
}" />
32+
</template>`,
33+
options: [{ ignoreDestructuring: true }]
34+
}
35+
],
36+
invalid: [
37+
{
38+
code: `
39+
<template>
40+
<div :attr="{ my_pref: 1 }" />
41+
</template>`,
42+
errors: [
43+
{
44+
message: 'Identifier \'my_pref\' is not in camel case.',
45+
line: 3
46+
}
47+
]
48+
},
49+
{
50+
code: `
51+
<template>
52+
<div @click="($event) => {
53+
const { my_pref } = $event
54+
}" />
55+
</template>`,
56+
errors: [
57+
{
58+
message: 'Identifier \'my_pref\' is not in camel case.',
59+
line: 4
60+
}
61+
]
62+
}
63+
]
64+
})

0 commit comments

Comments
 (0)