diff --git a/lib/rules/component-definition-name-casing.js b/lib/rules/component-definition-name-casing.js
index e227d4b99..c3a5cbc3d 100644
--- a/lib/rules/component-definition-name-casing.js
+++ b/lib/rules/component-definition-name-casing.js
@@ -77,8 +77,7 @@ module.exports = {
}
}
- return Object.assign(
- {},
+ return utils.compositingVisitors(
utils.executeOnCallVueComponent(context, (node) => {
if (node.arguments.length === 2) {
const argument = node.arguments[0]
@@ -94,6 +93,17 @@ module.exports = {
if (!node) return
if (!canConvert(node.value)) return
convertName(node.value)
+ }),
+ utils.defineScriptSetupVisitor(context, {
+ onDefineOptionsEnter(node) {
+ if (node.arguments.length === 0) return
+ const define = node.arguments[0]
+ if (define.type !== 'ObjectExpression') return
+ const nameNode = utils.findProperty(define, 'name')
+ if (!nameNode) return
+ if (!canConvert(nameNode.value)) return
+ convertName(nameNode.value)
+ }
})
)
}
diff --git a/tests/lib/rules/component-definition-name-casing.js b/tests/lib/rules/component-definition-name-casing.js
index ef9cbde8b..2349f5d30 100644
--- a/tests/lib/rules/component-definition-name-casing.js
+++ b/tests/lib/rules/component-definition-name-casing.js
@@ -145,6 +145,26 @@ ruleTester.run('component-definition-name-casing', rule, {
filename: 'test.js',
code: `fn1(component.data)`,
parserOptions
+ },
+ {
+ filename: 'test.vue',
+ code: ``,
+ parser: require.resolve('vue-eslint-parser'),
+ parserOptions
+ },
+ {
+ filename: 'test.vue',
+ code: ``,
+ options: ['PascalCase'],
+ parser: require.resolve('vue-eslint-parser'),
+ parserOptions
+ },
+ {
+ filename: 'test.vue',
+ code: ``,
+ options: ['kebab-case'],
+ parser: require.resolve('vue-eslint-parser'),
+ parserOptions
}
],
@@ -393,6 +413,34 @@ ruleTester.run('component-definition-name-casing', rule, {
line: 1
}
]
+ },
+ {
+ filename: 'test.vue',
+ code: ``,
+ output: ``,
+ options: ['PascalCase'],
+ parser: require.resolve('vue-eslint-parser'),
+ parserOptions,
+ errors: [
+ {
+ message: 'Property name "foo-bar" is not PascalCase.',
+ line: 1
+ }
+ ]
+ },
+ {
+ filename: 'test.vue',
+ code: ``,
+ output: ``,
+ options: ['kebab-case'],
+ parser: require.resolve('vue-eslint-parser'),
+ parserOptions,
+ errors: [
+ {
+ message: 'Property name "FooBar" is not kebab-case.',
+ line: 1
+ }
+ ]
}
]
})