1 | # eslint-config-react-app
|
2 |
|
3 | This package includes the shareable ESLint configuration used by [Create React App](https://github.com/facebook/create-react-app).<br>
|
4 | Please refer to its documentation:
|
5 |
|
6 | - [Getting Started](https://facebook.github.io/create-react-app/docs/getting-started) – How to create a new app.
|
7 | - [User Guide](https://facebook.github.io/create-react-app/) – How to develop apps bootstrapped with Create React App.
|
8 |
|
9 | ## Usage in Create React App Projects
|
10 |
|
11 | The easiest way to use this configuration is with [Create React App](https://github.com/facebook/create-react-app), which includes it by default.
|
12 |
|
13 | **You don’t need to install it separately in Create React App projects.**
|
14 |
|
15 | ## Usage Outside of Create React App
|
16 |
|
17 | If you want to use this ESLint configuration in a project not built with Create React App, you can install it with the following steps.
|
18 |
|
19 | First, install this package and ESLint.
|
20 |
|
21 | ```sh
|
22 | npm install --save-dev eslint-config-react-app eslint@^8.0.0
|
23 | ```
|
24 |
|
25 | Then create a file named `.eslintrc.json` with following contents in the root folder of your project:
|
26 |
|
27 | ```json
|
28 | {
|
29 | "extends": "react-app"
|
30 | }
|
31 | ```
|
32 |
|
33 | That's it! You can override the settings from `eslint-config-react-app` by editing the `.eslintrc.json` file. Learn more about [configuring ESLint](https://eslint.org/docs/user-guide/configuring) on the ESLint website.
|
34 |
|
35 | ## Jest rules
|
36 |
|
37 | This config also ships with optional Jest rules for ESLint (based on [`eslint-plugin-jest`](https://github.com/jest-community/eslint-plugin-jest)).
|
38 |
|
39 | You can enable these rules by adding the Jest config to the `extends` array in your ESLint config.
|
40 |
|
41 | ```json
|
42 | {
|
43 | "extends": ["react-app", "react-app/jest"]
|
44 | }
|
45 | ```
|
46 |
|
47 | ## Accessibility Checks
|
48 |
|
49 | The following rules from the [eslint-plugin-jsx-a11y](https://github.com/evcohen/eslint-plugin-jsx-a11y) plugin are activated:
|
50 |
|
51 | - [alt-text](https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/alt-text.md)
|
52 | - [anchor-has-content](https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/anchor-has-content.md)
|
53 | - [aria-activedescendant-has-tabindex](https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/aria-activedescendant-has-tabindex.md)
|
54 | - [aria-props](https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/aria-props.md)
|
55 | - [aria-proptypes](https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/aria-proptypes.md)
|
56 | - [aria-role](https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/aria-role.md)
|
57 | - [aria-unsupported-elements](https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/aria-unsupported-elements.md)
|
58 | - [heading-has-content](https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/heading-has-content.md)
|
59 | - [href-no-hash](https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/v5.1.1/docs/rules/href-no-hash.md)
|
60 | - [iframe-has-title](https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/iframe-has-title.md)
|
61 | - [img-redundant-alt](https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/img-redundant-alt.md)
|
62 | - [no-access-key](https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/no-access-key.md)
|
63 | - [no-distracting-elements](https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/no-distracting-elements.md)
|
64 | - [no-redundant-roles](https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/no-redundant-roles.md)
|
65 | - [role-has-required-aria-props](https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/role-has-required-aria-props.md)
|
66 | - [role-supports-aria-props](https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/role-supports-aria-props.md)
|
67 | - [scope](https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/scope.md)
|
68 |
|
69 | If you want to enable even more accessibility rules, you can create an `.eslintrc.json` file in the root of your project with this content:
|
70 |
|
71 | ```json
|
72 | {
|
73 | "extends": ["react-app", "plugin:jsx-a11y/recommended"],
|
74 | "plugins": ["jsx-a11y"]
|
75 | }
|
76 | ```
|
77 |
|
78 | However, if you are using [Create React App](https://github.com/facebook/create-react-app) and have not ejected, any additional rules will only be displayed in the [IDE integrations](https://facebook.github.io/create-react-app/docs/setting-up-your-editor#displaying-lint-output-in-the-editor), but not in the browser or the terminal.
|