Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/github/eslint-plugin-github
An opinionated collection of ESLint rules used by GitHub.
https://github.com/github/eslint-plugin-github
eslint eslintplugin javascript
Last synced: about 1 month ago
JSON representation
An opinionated collection of ESLint rules used by GitHub.
- Host: GitHub
- URL: https://github.com/github/eslint-plugin-github
- Owner: github
- License: mit
- Created: 2016-03-28T22:20:22.000Z (over 8 years ago)
- Default Branch: main
- Last Pushed: 2024-09-23T00:24:35.000Z (about 2 months ago)
- Last Synced: 2024-09-30T00:05:30.082Z (about 1 month ago)
- Topics: eslint, eslintplugin, javascript
- Language: JavaScript
- Homepage:
- Size: 2.73 MB
- Stars: 295
- Watchers: 179
- Forks: 54
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Codeowners: CODEOWNERS
Awesome Lists containing this project
- awesome-eslint - GitHub - Misc. rules from GitHub. (Plugins / Code Quality)
- my-awesome - github/eslint-plugin-github - 10 star:0.3k fork:0.1k An opinionated collection of ESLint rules used by GitHub. (JavaScript)
README
# eslint-plugin-github
## Installation
```sh
npm install --save-dev eslint eslint-plugin-github
```## Setup
Add `github` to your list of plugins in your ESLint config.
JSON ESLint config example:
```json
{
"plugins": ["github"]
}
```Extend the configs you wish to use.
JSON ESLint config example:
```json
{
"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.### Component mapping (Experimental)
_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`.
```json
{
"settings": {
"github": {
"polymorphicPropName": "asChild",
"components": {
"Box": "p",
"Link": "a"
}
}
}
}
```This config will be interpreted in the following way:
- All `` elements will be treated as a `p` element type.
- `` without a defined `as` prop will be treated as a `a`.
- `` will be treated as a `button` element type.### Rules
πΌ 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](https://eslint.org/docs/user-guide/command-line-interface#--fix).\
β Deprecated.| NameΒ Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β | Description | πΌ | π§ | β |
| :------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------- | :- | :- | :- |
| [a11y-aria-label-is-well-formatted](docs/rules/a11y-aria-label-is-well-formatted.md) | [aria-label] text should be formatted as you would visual text. | βοΈ | | |
| [a11y-no-generic-link-text](docs/rules/a11y-no-generic-link-text.md) | disallow generic link text | | | β |
| [a11y-no-title-attribute](docs/rules/a11y-no-title-attribute.md) | Guards against developers using the title attribute | βοΈ | | |
| [a11y-no-visually-hidden-interactive-element](docs/rules/a11y-no-visually-hidden-interactive-element.md) | Ensures that interactive elements are not visually hidden | βοΈ | | |
| [a11y-role-supports-aria-props](docs/rules/a11y-role-supports-aria-props.md) | Enforce that elements with explicit or implicit roles defined contain only `aria-*` properties supported by that `role`. | βοΈ | | |
| [a11y-svg-has-accessible-name](docs/rules/a11y-svg-has-accessible-name.md) | SVGs must have an accessible name | βοΈ | | |
| [array-foreach](docs/rules/array-foreach.md) | enforce `for..of` loops over `Array.forEach` | β | | |
| [async-currenttarget](docs/rules/async-currenttarget.md) | disallow `event.currentTarget` calls inside of async functions | π | | |
| [async-preventdefault](docs/rules/async-preventdefault.md) | disallow `event.preventDefault` calls inside of async functions | π | | |
| [authenticity-token](docs/rules/authenticity-token.md) | disallow usage of CSRF tokens in JavaScript | π | | |
| [get-attribute](docs/rules/get-attribute.md) | disallow wrong usage of attribute names | π | π§ | |
| [js-class-name](docs/rules/js-class-name.md) | enforce a naming convention for js- prefixed classes | π | | |
| [no-blur](docs/rules/no-blur.md) | disallow usage of `Element.prototype.blur()` | π | | |
| [no-d-none](docs/rules/no-d-none.md) | disallow usage the `d-none` CSS class | π | | |
| [no-dataset](docs/rules/no-dataset.md) | enforce usage of `Element.prototype.getAttribute` instead of `Element.prototype.datalist` | π | | |
| [no-dynamic-script-tag](docs/rules/no-dynamic-script-tag.md) | disallow creating dynamic script tags | β | | |
| [no-implicit-buggy-globals](docs/rules/no-implicit-buggy-globals.md) | disallow implicit global variables | β | | |
| [no-inner-html](docs/rules/no-inner-html.md) | disallow `Element.prototype.innerHTML` in favor of `Element.prototype.textContent` | π | | |
| [no-innerText](docs/rules/no-innerText.md) | disallow `Element.prototype.innerText` in favor of `Element.prototype.textContent` | π | π§ | |
| [no-then](docs/rules/no-then.md) | enforce using `async/await` syntax over Promises | β | | |
| [no-useless-passive](docs/rules/no-useless-passive.md) | disallow marking a event handler as passive when it has no effect | π | π§ | |
| [prefer-observers](docs/rules/prefer-observers.md) | disallow poorly performing event listeners | π | | |
| [require-passive-events](docs/rules/require-passive-events.md) | enforce marking high frequency event handlers as passive | π | | |
| [unescaped-html-literal](docs/rules/unescaped-html-literal.md) | disallow unescaped HTML literals | π | | |