Thanks to visit codestin.com
Credit goes to github.com

Skip to content

github/eslint-plugin-github

Repository files navigation

eslint-plugin-github

Installation

npm install --save-dev eslint eslint-plugin-github

Setup

Add 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.

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.

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 a p element type.
  • <Link> without a defined as prop will be treated as a a.
  • <Link as='a'> will treated as an a element type.
  • <Link as='button'> will be treated as a button element type.
  • <Link as='summary'> will be treated as the raw Link type because there is no configuration set for as='summary'.

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.
❌ 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 ❌
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 πŸ”