React Native specific linting rules for ESLint
npm install eslint-plugin-react-nativeDear users, first of all, thanks for using the plugin! At the moment development activity is low, I've personally not worked with React Native for many years and have little time to continue updating the plugin. I'll do my best to update the plugin to ensure compatibility with new eslint versions, but unfortunately I do not have time to asses new features/pull requests. Thanks for your understanding!

[![Maintenance Status][status-image]][status-url] [![NPM version][npm-image]][npm-url] [![Coverage Status][coverage-image]][coverage-url]
React Native specific linting rules for ESLint. This repository is structured like (and contains code from) the excellent eslint-plugin-react.
Install ESLint either locally or globally.
``sh`
$ npm install --save-dev eslint
To make most use of this plugin, its recommended to install eslint-plugin-react in addition to ESLint. If you installed ESLint globally, you have to install eslint-plugin-react globally too. Otherwise, install it locally.
`sh`
$ npm install --save-dev eslint-plugin-react
Similarly, install eslint-plugin-react-native
`sh`
$ npm install --save-dev eslint-plugin-react-native
Add plugins section and specify ESLint-plugin-React (optional) and ESLint-plugin-react-native as a plugin.
`json`
{
"plugins": ["react", "react-native"]
}
If it is not already the case you must also configure ESLint to support JSX.
`json`
{
"parserOptions": {
"ecmaFeatures": {
"jsx": true
}
}
}
In order to whitelist all _browser-like_ globals, add react-native/react-native to your config.
`json`
{
"env": {
"react-native/react-native": true
}
}
To use another stylesheet providers.
`json`
settings: {
'react-native/style-sheet-object-names': ['EStyleSheet', 'OtherStyleSheet', 'PStyleSheet']
}
Finally, enable all of the rules that you would like to use.
`json`
{
"rules": {
"react-native/no-unused-styles": 2,
"react-native/split-platform-components": 2,
"react-native/no-inline-styles": 2,
"react-native/no-color-literals": 2,
"react-native/no-raw-text": 2,
"react-native/no-single-element-style-arrays": 2
}
}
- no-unused-styles: Detect StyleSheet rules which are not used in your React componentsStyleSheet
- sort-styles: Require style definitions to be sorted alphabetically
- split-platform-components: Enforce using platform specific filenames when necessary
- no-inline-styles: Detect JSX components with inline styles that contain literal values
- no-color-literals: Detect rules and inline styles containing color literals instead of variablesText
- no-raw-text: Detect raw text outside of component
- no-single-element-style-arrays: No style arrays that have 1 element only
[npm-url]: https://npmjs.org/package/eslint-plugin-react-native
[npm-image]: http://img.shields.io/npm/v/eslint-plugin-react-native.svg?style=flat-square
[coverage-url]: https://coveralls.io/r/Intellicode/eslint-plugin-react-native?branch=master
[coverage-image]: http://img.shields.io/coveralls/Intellicode/eslint-plugin-react-native/master.svg?style=flat-square
[status-url]: https://github.com/Intellicode/eslint-plugin-react-native/pulse
[status-image]: http://img.shields.io/badge/status-maintained-brightgreen.svg?style=flat-square
This plugin also exports an all configuration that includes every available rule.
`js`
{
"plugins": [
/ ... /
"react-native"
],
"extends": [/ ... /, "plugin:react-native/all"]
}
Note: These configurations will import eslint-plugin-react-native` and enable JSX in parser options.