Skip to content

An opinionated collection of ESLint rules used by GitHub.

License

Notifications You must be signed in to change notification settings

rotelloj/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

Accessibility-focused rules (prefixed with a11y)

About

An opinionated collection of ESLint rules used by GitHub.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 98.4%
  • Dockerfile 1.6%