https://github.com/benhigham/eslint-config
My personal ESLint configurations.
https://github.com/benhigham/eslint-config
codeguide eslint eslint-config eslint-configurations eslint-rules eslintrc format formatter formatting lint rules standard style styleguide tslint tslint-rules
Last synced: 6 months ago
JSON representation
My personal ESLint configurations.
- Host: GitHub
- URL: https://github.com/benhigham/eslint-config
- Owner: benhigham
- License: mit
- Created: 2025-03-31T14:16:54.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2025-06-23T14:05:54.000Z (7 months ago)
- Last Synced: 2025-06-30T05:44:20.394Z (6 months ago)
- Topics: codeguide, eslint, eslint-config, eslint-configurations, eslint-rules, eslintrc, format, formatter, formatting, lint, rules, standard, style, styleguide, tslint, tslint-rules
- Language: JavaScript
- Homepage:
- Size: 1010 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
Awesome Lists containing this project
README
# @benhigham/eslint-config
[](https://www.npmjs.com/package/@benhigham/eslint-config)
[](https://www.npmjs.com/package/@benhigham/eslint-config)
[](LICENSE.md)
A shareable ESLint configuration package with opinionated rules for JavaScript and TypeScript projects, built on top of [`eslint-config-xo`](https://github.com/xojs/eslint-config-xo) with additional plugins and custom configurations.
## Features
- **Comprehensive JavaScript & TypeScript Linting**: Strong base rules for both JavaScript and TypeScript projects
- **Node.js & Browser Support**: Environment-specific rules for Node.js and browser projects
- **React & Next.js Support**: Dedicated configurations for React and Next.js applications
- **Accessibility**: Linting for accessibility best practices in JSX
- **Promise & Async Code**: Enforces best practices for promises and async code
- **Security**: Prevents use of secrets, unsanitized DOM manipulation, and unsafe patterns
- **Code Quality & Consistency**: Includes rules for code quality, maintainability, and modern best practices
- **Testing Support**: Built-in support for Vitest, Testing Library, and Playwright
- **GraphQL Linting**: Schema and operation linting for GraphQL projects
- **Tailwind CSS Integration**: Linting for Tailwind CSS class usage
- **Prettier Compatibility**: Disables conflicting rules for seamless Prettier integration
- **Documentation Linting**: Enforces standards for JSDoc and ESLint directive comments
## Installation
```bash
# npm
npm install --save-dev @benhigham/eslint-config
# yarn
yarn add --dev @benhigham/eslint-config
# pnpm
pnpm add --save-dev @benhigham/eslint-config
```
## Usage
Add the configuration to your ESLint config file:
### Basic Usage (JavaScript)
```js
// eslint.config.js
import benhighamEslintConfig from '@benhigham/eslint-config';
/** @type {import('eslint').Linter.Config[]} */
const config = [...benhighamEslintConfig];
export default config;
```
### TypeScript
```js
// eslint.config.js
import benhighamEslintConfigTypescript from '@benhigham/eslint-config/typescript';
/** @type {import('eslint').Linter.Config[]} */
const config = [...benhighamEslintConfigTypescript];
export default config;
```
### Browser
```js
// eslint.config.js
import benhighamEslintConfigBrowser from '@benhigham/eslint-config/browser';
/** @type {import('eslint').Linter.Config[]} */
const config = [...benhighamEslintConfigBrowser];
export default config;
```
### React
```js
// eslint.config.js
import benhighamEslintConfigReact from '@benhigham/eslint-config/react';
/** @type {import('eslint').Linter.Config[]} */
const config = [...benhighamEslintConfigReact];
export default config;
```
### Next.js
```js
// eslint.config.js
import benhighamEslintConfigNext from '@benhigham/eslint-config/next';
/** @type {import('eslint').Linter.Config[]} */
const config = [...benhighamEslintConfigNext];
export default config;
```
### GraphQL Plugin
For schema configuration (server):
```js
// eslint.config.js
import { schemaConfig } from '@benhigham/eslint-config/plugins/graphql';
/** @type {import('eslint').Linter.Config[]} */
const config = [...schemaConfig];
export default config;
```
For operations configuration (client):
```js
// eslint.config.js
import { operationsConfig } from '@benhigham/eslint-config/plugins/graphql';
/** @type {import('eslint').Linter.Config[]} */
const config = [...operationsConfig];
export default config;
```
### Playwright Plugin
```js
// eslint.config.js
import playwrightConfig from '@benhigham/eslint-config/plugins/playwright';
/** @type {import('eslint').Linter.Config[]} */
const config = [
{
files: ['**/tests/**/*.?(c|m)[jt]s', '**/*.{test,spec}.?(c|m)[jt]s'],
...playwrightConfig,
},
];
export default config;
```
### Tailwind CSS Plugin
```js
// eslint.config.js
import tailwindcssConfig from '@benhigham/eslint-config/plugins/tailwindcss';
/** @type {import('eslint').Linter.Config[]} */
const config = [tailwindcssConfig];
export default config;
```
## Included Plugins
This package includes rules and configurations from the following plugins:
- **eslint-plugin-unicorn**: Various powerful ESLint rules
- **eslint-plugin-import-x**: Enhanced import/export linting
- **eslint-plugin-promise**: Best practices for JavaScript promises
- **eslint-plugin-n**: Node.js-specific rules
- **eslint-plugin-compat**: Ensures browser compatibility via Browserslist
- **eslint-plugin-no-use-extend-native**: Prevents extending built-in native objects
- **eslint-plugin-no-secrets**: Prevents committing secrets to code
- **eslint-plugin-no-unsanitized**: Prevents unsanitized DOM manipulation
- **eslint-plugin-depend**: Dependency management rules
- **eslint-plugin-sonarjs**: Detects bugs and suspicious patterns
- **@eslint-community/eslint-plugin-eslint-comments**: Best practices for ESLint directive comments
- **eslint-plugin-jsdoc**: JSDoc comment linting
- **eslint-plugin-jsx-a11y**: Accessibility rules for JSX
- **@next/eslint-plugin-next**: Next.js-specific rules
- **eslint-plugin-testing-library**: Testing Library rules (DOM and React)
- **@vitest/eslint-plugin**: Vitest testing framework rules
- **eslint-plugin-playwright**: Playwright testing rules
- **@graphql-eslint/eslint-plugin**: GraphQL schema and operation linting
- **eslint-plugin-tailwindcss**: Tailwind CSS class linting
- **eslint-config-prettier**: Disables rules that conflict with Prettier
## License
This project is licensed under the [MIT License](LICENSE.md).