Skip to content

Commit a9bd24c

Browse files
authored
Added support for defineOptions to vue/multi-word-component-names rule (#2157)
1 parent 8ed65c9 commit a9bd24c

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

Diff for: lib/rules/multi-word-component-names.js

+11
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,17 @@ module.exports = {
9898
hasName = true
9999
validateName(node.value)
100100
}),
101+
utils.defineScriptSetupVisitor(context, {
102+
onDefineOptionsEnter(node) {
103+
if (node.arguments.length === 0) return
104+
const define = node.arguments[0]
105+
if (define.type !== 'ObjectExpression') return
106+
const nameNode = utils.findProperty(define, 'name')
107+
if (!nameNode) return
108+
hasName = true
109+
validateName(nameNode.value)
110+
}
111+
}),
101112
{
102113
/** @param {Program} node */
103114
'Program:exit'(node) {

Diff for: tests/lib/rules/multi-word-component-names.js

+23-1
Original file line numberDiff line numberDiff line change
@@ -209,10 +209,18 @@ tester.run('multi-word-component-names', rule, {
209209
<template>
210210
<AppButton />
211211
</template>
212-
212+
213213
<script setup lang="ts">
214214
import AppButton from "@/components/AppButton.vue";
215215
</script>`
216+
},
217+
{
218+
filename: 'Single.vue',
219+
code: `
220+
<script setup>
221+
defineOptions({name: 'MultiWord'})
222+
</script>
223+
`
216224
}
217225
],
218226
invalid: [
@@ -333,6 +341,20 @@ tester.run('multi-word-component-names', rule, {
333341
line: 1
334342
}
335343
]
344+
},
345+
{
346+
filename: 'MultiWord.vue',
347+
code: `
348+
<script setup>
349+
defineOptions({name: 'Single'})
350+
</script>
351+
`,
352+
errors: [
353+
{
354+
message: 'Component name "Single" should always be multi-word.',
355+
line: 3
356+
}
357+
]
336358
}
337359
]
338360
})

0 commit comments

Comments
 (0)