npm install --save-dev eslint eslint-plugin-githubAdd github to your list of plugins in your ESLint config.
JSON ESLint config example:
{ "plugins": ["github"] }Extend the configs you wish to use.
JSON ESLint config example:
{ "extends": ["plugin:github/recommended"] }The available configs are:
- internal- Rules useful for github applications.
 
- browser- Useful rules when shipping your app to the browser.
 
- react- Recommended rules for React applications.
 
- recommended- Recommended rules for every application.
 
- typescript- Useful rules when writing TypeScript.
 
Note: This is experimental and subject to change.
The react config includes rules which target specific HTML elements. You may provide a mapping of custom components to an HTML element in your eslintrc configuration to increase linter coverage.
By default, these eslint rules will check the "as" prop for underlying element changes. If your repo uses a different prop name for polymorphic components provide the prop name in your eslintrc configuration under polymorphicPropName.
{ "settings": { "github": { "polymorphicPropName": "asChild", "components": { "Box": "p", "Link": "a" } } } }This config will be interpreted in the following way:
- All <Box>elements will be treated as apelement type.
- <Link>without a defined- asprop will be treated as a- a.
- <Link as='button'>will be treated as a- buttonelement type.
๐ผ Configurations enabled in.
 ๐ Set in the browser configuration.
 ๐ Set in the internal configuration.
 โ๏ธ Set in the react configuration.
 โ
 Set in the recommended configuration.
 ๐ง Automatically fixable by the --fix CLI option.
 โ Deprecated.
| Nameย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย | Description | ๐ผ | ๐ง | โ | 
|---|---|---|---|---|
| a11y-aria-label-is-well-formatted | [aria-label] text should be formatted as you would visual text. | โ๏ธ | ||
| a11y-no-generic-link-text | disallow generic link text | โ | ||
| a11y-no-title-attribute | Guards against developers using the title attribute | โ๏ธ | ||
| a11y-no-visually-hidden-interactive-element | Ensures that interactive elements are not visually hidden | โ๏ธ | ||
| a11y-role-supports-aria-props | Enforce that elements with explicit or implicit roles defined contain only aria-*properties supported by thatrole. | โ๏ธ | ||
| a11y-svg-has-accessible-name | SVGs must have an accessible name | โ๏ธ | ||
| array-foreach | enforce for..ofloops overArray.forEach | โ | ||
| async-currenttarget | disallow event.currentTargetcalls inside of async functions | ๐ | ||
| async-preventdefault | disallow event.preventDefaultcalls inside of async functions | ๐ | ||
| authenticity-token | disallow usage of CSRF tokens in JavaScript | ๐ | ||
| get-attribute | disallow wrong usage of attribute names | ๐ | ๐ง | |
| js-class-name | enforce a naming convention for js- prefixed classes | ๐ | ||
| no-blur | disallow usage of Element.prototype.blur() | ๐ | ||
| no-d-none | disallow usage the d-noneCSS class | ๐ | ||
| no-dataset | enforce usage of Element.prototype.getAttributeinstead ofElement.prototype.datalist | ๐ | ||
| no-dynamic-script-tag | disallow creating dynamic script tags | โ | ||
| no-implicit-buggy-globals | disallow implicit global variables | โ | ||
| no-inner-html | disallow Element.prototype.innerHTMLin favor ofElement.prototype.textContent | ๐ | ||
| no-innerText | disallow Element.prototype.innerTextin favor ofElement.prototype.textContent | ๐ | ๐ง | |
| no-then | enforce using async/awaitsyntax over Promises | โ | ||
| no-useless-passive | disallow marking a event handler as passive when it has no effect | ๐ | ๐ง | |
| prefer-observers | disallow poorly performing event listeners | ๐ | ||
| require-passive-events | enforce marking high frequency event handlers as passive | ๐ | ||
| unescaped-html-literal | disallow unescaped HTML literals | ๐ |