GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - github/eslint-plugin-github: An opinionated collection of ESLint rules used by GitHub.

BranchesTags
Open more actions menu

Latest commit

 

History

1,671 Commits
1,671 Commits

Folders and files

NameName
Last commit message
Last commit date
.devcontainer
.devcontainer
 
 
.github
.github
 
 
bin
bin
 
 
docs/rules
docs/rules
 
 
lib
lib
 
 
test-examples
test-examples
 
 
tests
tests
 
 
.eslint-doc-generatorrc.js
.eslint-doc-generatorrc.js
 
 
.gitignore
.gitignore
 
 
.npmrc
.npmrc
 
 
CODEOWNERS
CODEOWNERS
 
 
CONTRIBUTING.md
CONTRIBUTING.md
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 
eslint.config.js
eslint.config.js
 
 
package-lock.json
package-lock.json
 
 
package.json
package.json
 
 

Repository files navigation

eslint-plugin-github

Installation

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

Setup

Legacy Configuration (.eslintrc)

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"]
}

Flat Configuration (eslint-config.js)

Import the eslint-plugin-github, and extend any of the configurations using getFlatConfigs() as needed like so:

import github from 'eslint-plugin-github'

export default [
  github.getFlatConfigs().browser,
  github.getFlatConfigs().recommended,
  github.getFlatConfigs().react,
  ...github.getFlatConfigs().typescript,
  {
    files: ['**/*.{js,mjs,cjs,jsx,mjsx,ts,tsx,mtsx}'],
    ignores: ['eslint.config.mjs'],
    rules: {
      'github/array-foreach': 'error',
      'github/async-preventdefault': 'warn',
      'github/no-then': 'error',
      'github/no-blur': 'error',
    },
  },
]

Note

If you configured the filenames/match-regex rule, please note we have adapted the match regex rule into eslint-plugin-github as the original eslint-filenames-plugin is no longer maintained and needed a flat config support update.

Please update the name to github/filenames-match-regex, and note, the default rule is kebab case or camelCase with one hump. For custom configuration, such as matching for camelCase regex, here's an example:

'github/filenames-match-regex': ['error', '^([a-z0-9]+)([A-Z][a-z0-9]+)*$'],

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.

{
  "settings": {
    "github": {
      "polymorphicPropName": "asChild",
      "components": {
        "Box": "p",
        "Link": "a"
      }
    }
  }
}

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='button'> 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.
āŒ Deprecated.

Name                                        Description šŸ’¼ šŸ”§ āŒ
a11y-aria-label-is-well-formatted enforce [aria-label] text to be formatted as you would visual text. āš›ļø
a11y-no-generic-link-text disallow generic link text āŒ
a11y-no-title-attribute disallow using the title attribute āš›ļø
a11y-no-visually-hidden-interactive-element enforce that interactive elements are not visually hidden āš›ļø
a11y-role-supports-aria-props enforce that elements with explicit or implicit roles defined contain only aria-* properties supported by that role. āš›ļø
a11y-svg-has-accessible-name require SVGs to have an accessible name āš›ļø
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 šŸ”
filenames-match-regex require filenames to match a regex naming convention
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 šŸ”
unescaped-html-literal disallow unescaped HTML literals šŸ”

About

An opinionated collection of ESLint rules used by GitHub.

Topics

eslinteslintpluginjavascript

Resources

Readme
MIT license

Code of conduct

Code of conduct

Contributing

Contributing

Security policy

Security policy
Activity
Custom properties

Stars

336 stars

Watchers

203 watching

Forks

66 forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800Ɨ600. No cookies required.