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.
For each component, you may specify a default and/or props. default may make sense if there's a 1:1 mapping between a component and an HTML element. However, if the HTML output of a component is dependent on a prop value, you can provide a mapping using the props key. To minimize conflicts and complexity, this currently only supports the mapping of a single prop type.
{ "settings": { "github": { "components": { "Box": {"default": "p"}, "Link": {"props": {"as": {"undefined": "a", "a": "a", "button": "button"}}} } } } }This config will be interpreted in the following way:
- All
<Box>elements will be treated as apelement type. <Link>without a definedasprop will be treated as aa.<Link as='a'>will treated as anaelement type.<Link as='button'>will be treated as abuttonelement type.<Link as='summary'>will be treated as the rawLinktype because there is no configuration set foras='summary'.
πΌ 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-no-generic-link-text | disallow generic link text | β | ||
| array-foreach | enforce for..of loops over Array.forEach | β | ||
| async-currenttarget | disallow event.currentTarget calls inside of async functions | π | ||
| async-preventdefault | disallow event.preventDefault calls 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-none CSS class | π | ||
| no-dataset | enforce usage of Element.prototype.getAttribute instead of Element.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.innerHTML in favor of Element.prototype.textContent | π | ||
| no-innerText | disallow Element.prototype.innerText in favor of Element.prototype.textContent | π | π§ | |
| no-then | enforce using async/await syntax 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 | π | ||
| role-supports-aria-props | Enforce that elements with explicit or implicit roles defined contain only aria-* properties supported by that role. | βοΈ | ||
| unescaped-html-literal | disallow unescaped HTML literals | π |