eslint-flat-config-plugin-jsx-control-statements
v1.0.3
Published
jsx-control-statements specific linting rules for ESLint 9
Downloads
171
Maintainers
Readme
ESLint-flat-config-plugin-JSX-control-statements
Installation
Install ESLint either locally or globally.
$ npm install eslint
If you installed ESLint
globally, you have to install React plugin globally too. Otherwise, install it locally.
$ npm i eslint-flat-config-plugin-jsx-control-statements
Configuration (Simple)
Add plugins
section and specify ESLint-plugin-JSX-Control-Statements as a plugin and plugin:jsx-control-statements/recommended
to "extends"
rules: {
...js.configs.recommended.rules,
...react.configs.recommended.rules,
...react.configs['jsx-runtime'].rules,
...reactHooks.configs.recommended.rules,
'react/prop-types': 'off',
'react/jsx-no-target-blank': 'off',
'react/jsx-no-undef': [2, { allowGlobals: true }],
'react-refresh/only-export-components': [
'warn',
{ allowConstantExport: true },
],
...jsxCS.configs.recommended.rules,
'jsx-control-statements/jsx-for-require-body': 0,
'no-unused-vars': 1,
}
If it is not already the case you must also configure ESLint
to support JSX.
{
"ecmaFeatures": {
"jsx": true
}
}
Configuration (Advanced)
The plugin comes with a number of rules and an environment that sets the control statements (<If>
, <For>
etc) as global variables:
{
"rules": {
"jsx-control-statements/jsx-choose-not-empty": 1,
"jsx-control-statements/jsx-for-require-each": 1,
"jsx-control-statements/jsx-for-require-of": 1,
"jsx-control-statements/jsx-for-require-body": 1,
"jsx-control-statements/jsx-if-require-condition": 1,
"jsx-control-statements/jsx-otherwise-once-last": 1,
"jsx-control-statements/jsx-use-if-tag": 1,
"jsx-control-statements/jsx-when-require-condition": 1,
"jsx-control-statements/jsx-jcs-no-undef": 1,
"no-undef": 0 // Replace this with jsx-jcs-no-undef
}
}
Important:
After version 7.0.0 of eslint-plugin-react
the rule react/jsx-no-undef
it's not checking globals by default anymore.
So you need to enable this to avoid lint errors telling that "If", "Choose", etc. are not defined. To fix this add to your
rules:
{
"rules": {
"react/jsx-no-undef": [2, { "allowGlobals": true }]
}
}
List of supported rules
- jsx-choose-not-empty: Warn when
Choose
tag is empty or does not have at least oneWhen
tag as child. - jsx-for-require-each: Warn if
For
tag is missingeach
attribute. And also marks the variable as defined. - jsx-for-require-of: Warn if
For
tag is missingof
attribute. - jsx-for-require-body: Warn if
For
tag is missingbody
attribute. - jsx-if-require-condition: Warn if
If
tag is missingcondition
attribute. - jsx-otherwise-once-last: Warn when
Otherwise
tag is used more than once insideChoose
and is not last child. - jsx-use-if-tag: Use
If
tag instead of ternary operator. - jsx-when-require-condition: Warn if
When
tag is missingcondition
attribute. - jsx-jcs-no-undef: Replaces the built-in
no-undef
rule with one that is tolerant of variables expressed in<For>
(each
andindex
attributes) and<With>
. Note that to stop getting errors fromno-undef
you have to turn it off and this on.
Credits
Thanks to @yannickcr for his awesome eslint-plugin-react.
License
MIT License. Copyright(c) Abhilash B K