Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More โ†’
Socket
Sign inDemoInstall
Socket

eslint-plugin-github

Package Overview
Dependencies
Maintainers
24
Versions
125
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

eslint-plugin-github

An opinionated collection of ESLint shared configs and rules used by GitHub.

  • 5.1.5
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
76K
increased by57.37%
Maintainers
24
Weekly downloads
ย 
Created
Source

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[aria-label] text should be formatted as you would visual text.โš›๏ธ
a11y-no-generic-link-textdisallow generic link textโŒ
a11y-no-title-attributeGuards against developers using the title attributeโš›๏ธ
a11y-no-visually-hidden-interactive-elementEnsures that interactive elements are not visually hiddenโš›๏ธ
a11y-role-supports-aria-propsEnforce that elements with explicit or implicit roles defined contain only aria-* properties supported by that role.โš›๏ธ
a11y-svg-has-accessible-nameSVGs must have an accessible nameโš›๏ธ
array-foreachenforce for..of loops over Array.forEachโœ…
async-currenttargetdisallow event.currentTarget calls inside of async functions๐Ÿ”
async-preventdefaultdisallow event.preventDefault calls inside of async functions๐Ÿ”
authenticity-tokendisallow usage of CSRF tokens in JavaScript๐Ÿ”
filenames-match-regexensure filenames match a regex naming convention
get-attributedisallow wrong usage of attribute names๐Ÿ”๐Ÿ”ง
js-class-nameenforce a naming convention for js- prefixed classes๐Ÿ”
no-blurdisallow usage of Element.prototype.blur()๐Ÿ”
no-d-nonedisallow usage the d-none CSS class๐Ÿ”
no-datasetenforce usage of Element.prototype.getAttribute instead of Element.prototype.datalist๐Ÿ”
no-dynamic-script-tagdisallow creating dynamic script tagsโœ…
no-implicit-buggy-globalsdisallow implicit global variablesโœ…
no-inner-htmldisallow Element.prototype.innerHTML in favor of Element.prototype.textContent๐Ÿ”
no-innerTextdisallow Element.prototype.innerText in favor of Element.prototype.textContent๐Ÿ”๐Ÿ”ง
no-thenenforce using async/await syntax over Promisesโœ…
no-useless-passivedisallow marking a event handler as passive when it has no effect๐Ÿ”๐Ÿ”ง
prefer-observersdisallow poorly performing event listeners๐Ÿ”
require-passive-eventsenforce marking high frequency event handlers as passive๐Ÿ”
unescaped-html-literaldisallow unescaped HTML literals๐Ÿ”

FAQs

Package last updated on 06 Jan 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with โšก๏ธ by Socket Inc