An opinionated collection of ESLint rules used by GitHub.
Перейти к файлу
Kendall Gassner 66beed54df
Updating readme: Accessibility guidance
2023-01-31 07:56:51 -08:00
.devcontainer chore: Run Prettier 2023-01-10 19:43:51 +00:00
.github drop node 12 / add node 18 to test matrix 2023-01-10 12:13:55 -05:00
bin remove scripts 2020-03-19 16:52:19 +00:00
docs/rules chore: Run Prettier 2023-01-10 19:51:36 +00:00
lib chore: Run Prettier 2023-01-10 19:51:36 +00:00
tests chore: Run Prettier 2023-01-10 19:51:36 +00:00
.eslintrc.js chore: Run Prettier 2023-01-10 19:51:36 +00:00
.gitignore Check in package-lock file 2019-08-20 12:35:55 -07:00
CODEOWNERS Create CODEOWNERS 2020-03-19 16:57:52 +00:00
CONTRIBUTING.md Create CONTRIBUTING.md 2021-10-06 15:22:05 +00:00
LICENSE Add LICENSE 2016-03-28 15:23:37 -07:00
README.md Updating readme: Accessibility guidance 2023-01-31 07:56:51 -08:00
package-lock.json chore(deps): bump @typescript-eslint/parser from 5.48.1 to 5.48.2 2023-01-23 07:47:16 -07:00
package.json Merge branch 'main' into smockle/wip 2023-01-10 14:44:53 -05:00

README.md

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

Accessibility-focused rules (prefixed with a11y)

note: these rules apply to .jsx and .tsx file types