JSPM

@benhigham/eslint-config

0.1.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 3
  • Score
    100M100P100Q65008F
  • License MIT

My personal ESLint configurations.

Package Exports

  • @benhigham/eslint-config
  • @benhigham/eslint-config/browser
  • @benhigham/eslint-config/next
  • @benhigham/eslint-config/react
  • @benhigham/eslint-config/typescript

Readme

@benhigham/eslint-config

npm version npm downloads License

A shareable ESLint configuration package with opinionated rules for JavaScript and TypeScript projects, built on top of eslint-config-xo with additional plugins and custom configurations.

Features

  • Base Configuration: Core JavaScript linting with sensible defaults
  • TypeScript Support: Built-in TypeScript linting using eslint-config-xo-typescript
  • Environment Support: Browser and Node.js specific configurations
  • Framework Support: Dedicated configurations for React and Next.js
  • Testing: Built-in support for Vitest and Testing Library
  • Prettier Integration: Compatible with Prettier for consistent code formatting

Installation

# 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)

// eslint.config.js
import benhighamEslintConfig from '@benhigham/eslint-config';

/** @type {import('eslint').Linter.Config[]} */
const config = [...benhighamEslintConfig];

export default config;

TypeScript

// eslint.config.js
import benhighamEslintConfigTypescript from '@benhigham/eslint-config/typescript';

/** @type {import('eslint').Linter.Config[]} */
const config = [...benhighamEslintConfigTypescript];

export default config;

Browser

// eslint.config.js
import benhighamEslintConfigBrowser from '@benhigham/eslint-config/browser';

/** @type {import('eslint').Linter.Config[]} */
const config = [...benhighamEslintConfigBrowser];

export default config;

React

// eslint.config.js
import benhighamEslintConfigReact from '@benhigham/eslint-config/react';

/** @type {import('eslint').Linter.Config[]} */
const config = [...benhighamEslintConfigReact];

export default config;

Next.js

// eslint.config.js
import benhighamEslintConfigNext from '@benhigham/eslint-config/next';

/** @type {import('eslint').Linter.Config[]} */
const config = [...benhighamEslintConfigNext];

export default config;

Included Plugins

This package includes rules and configurations from the following plugins:

  • eslint-plugin-import: Manages import/export syntax and prevents issues
  • eslint-plugin-unicorn: Various awesome ESLint rules
  • eslint-plugin-promise: Enforces best practices for JavaScript promises
  • eslint-plugin-eslint-comments: Enforces best practices for ESLint directive comments
  • eslint-plugin-jsx-a11y: Accessibility rules for JSX
  • eslint-plugin-no-use-extend-native: Prevents extending built-in native objects
  • eslint-plugin-n: Rules for Node.js development (formerly eslint-plugin-node)
  • @next/eslint-plugin-next: Rules specific to Next.js development
  • @vitest/eslint-plugin: Rules for Vitest testing framework
  • eslint-plugin-testing-library: Rules for Testing Library (DOM and React)
  • eslint-config-prettier: Turns off ESLint rules that conflict with Prettier

Key Features

Import Rules

The package provides comprehensive import ordering and validation rules to ensure consistent imports with proper separation between different groups:

// Example of sorted imports following the rules
// Built-in modules
import fs from 'node:fs';

// External dependencies
import React from 'react';
import axios from 'axios';

// Internal modules
import Button from '@workspace/ui/button';

// Parent/sibling/index imports
import utils from '../utils';
import Header from './header';
import { constants } from '.';

TypeScript Support

The TypeScript configuration extends the base with:

  • Type-aware linting rules
  • Disabling of type-related rules for JavaScript files
  • Support for proper import resolution between JS and TS files

Testing Support

Integrated support for:

  • Vitest testing framework
  • DOM Testing Library
  • React Testing Library

License

This project is licensed under the MIT License.