Skip to content

Commit e7f7e89

Browse files
Haeginljharb
authored andcommitted
[fix] jsx-pascal-case: allow one-letter-named components
Fixes #2394. $ and _ are valid names for components that are neither upper nor lower case. This change ensures the pascal case rule doesn't apply to single letter components
1 parent 5f00ad2 commit e7f7e89

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

lib/rules/jsx-pascal-case.js

+1
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ module.exports = {
5151
return {
5252
JSXOpeningElement(node) {
5353
let name = elementType(node);
54+
if (name.length === 1) return undefined;
5455

5556
// Get namespace if the type is JSXNamespacedName or JSXMemberExpression
5657
if (name.indexOf(':') > -1) {

tests/lib/rules/jsx-pascal-case.js

+9
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,12 @@ ruleTester.run('jsx-pascal-case', rule, {
5959
}, {
6060
code: '<IGNORED />',
6161
options: [{ignore: ['IGNORED']}]
62+
}, {
63+
code: '<T />'
64+
}, {
65+
code: '<$ />'
66+
}, {
67+
code: '<_ />'
6268
}],
6369

6470
invalid: [{
@@ -82,5 +88,8 @@ ruleTester.run('jsx-pascal-case', rule, {
8288
code: '<__ />',
8389
options: [{allowAllCaps: true}],
8490
errors: [{message: 'Imported JSX component __ must be in PascalCase or SCREAMING_SNAKE_CASE'}]
91+
}, {
92+
code: '<$a />',
93+
errors: [{message: 'Imported JSX component $a must be in PascalCase'}]
8594
}]
8695
});

0 commit comments

Comments
 (0)