eslint-plugin-jsx-control-statements
eslint-plugin-jsx-control-statements copied to clipboard
ESLint plugin for JSX-Control-Statements (https://github.com/AlexGilleran/jsx-control-statements)
ESLint-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 install eslint-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"
{
"plugins": [
"jsx-control-statements"
],
"extends": ["plugin:jsx-control-statements/recommended"]
}
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
},
env: {
"jsx-control-statements/jsx-control-statements": true
}
}
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
Choosetag is empty or does not have at least oneWhentag as child. - jsx-for-require-each: Warn if
Fortag is missingeachattribute. And also marks the variable as defined. - jsx-for-require-of: Warn if
Fortag is missingofattribute. - jsx-for-require-body: Warn if
Fortag is missingbodyattribute. - jsx-if-require-condition: Warn if
Iftag is missingconditionattribute. - jsx-otherwise-once-last: Warn when
Otherwisetag is used more than once insideChooseand is not last child. - jsx-use-if-tag: Use
Iftag instead of ternary operator. - jsx-when-require-condition: Warn if
Whentag is missingconditionattribute. - jsx-jcs-no-undef: Replaces the built-in
no-undefrule with one that is tolerant of variables expressed in<For>(eachandindexattributes) and<With>. Note that to stop getting errors fromno-undefyou have to turn it off and this on.
Credits
Thanks to @yannickcr for his awesome eslint-plugin-react.
License
MIT License. Copyright(c) Vivek Kumar Bansal