2.2.0 • Published 5 months ago

@zhangyu1818/eslint-config v2.2.0

Weekly downloads
-
License
MIT
Repository
-
Last release
5 months ago

@zhangyu1818/eslint-config

Very opinionated Flat ESLint Config, but supports rules overrides.

Support ESLint ^9 for React, Next.js, TailwindCSS, Prettier.

Usage

pnpm i @zhangyu1818/eslint-config -D
// esling.config.js or esling.config.mjs
import { defineConfig } from '@zhangyu1818/eslint-config'

export default defineConfig()

API

import { FlatESLintConfig } from 'eslint-define-config'

type RulesOverrides = FlatESLintConfig['rules']

interface TsParserOptions {
  project?: boolean | string | string[]
  tsconfigRootDir?: string
}

interface ReactFrameworkOptions {
  next?: boolean
  vite?: boolean
}

interface ReactOptions {
  a11y?: boolean
  framework?: ReactFrameworkOptions
}

interface Presets {
  comments?: RulesOverrides | boolean
  ignores?: boolean
  imports?: RulesOverrides | boolean
  javascript?: RulesOverrides | boolean
  jsonc?: RulesOverrides | boolean
  jsx?: boolean
  next?: RulesOverrides | boolean
  node?: RulesOverrides | boolean
  perfectionist?: RulesOverrides | boolean
  prettier?: RulesOverrides | boolean
  react?: RulesOverrides | boolean
  regexp?: RulesOverrides | boolean
  sort?: boolean
  tailwindcss?: RulesOverrides | boolean
  test?: RulesOverrides | boolean
  typescript?: RulesOverrides | boolean
  unicorn?: RulesOverrides | boolean
}

interface Options {
  parserOptions?: TsParserOptions
  presets?: Presets
  reactOptions?: ReactOptions
}

declare function defineConfig(
  options?: Options,
  userConfigs?: FlatESLintConfig[],
): FlatESLintConfig[]

Default presets

const defaultPresets: Presets = {
  comments: true,
  ignores: true,
  imports: true,
  javascript: true,
  jsonc: true,
  jsx: true,
  perfectionist: true,
  regexp: true,
  sort: true,
  unicorn: true,
}

TODO

  • Upgrade to ESLint v9, currently some plugins do not support ESLint v9.
  • Change the configuration to dynamic on-demand imports to reduce dependencies of this package.
  • Add CLI tool.
  • Optimize packaging.

This project heavily references @antfu/eslint-config. Thanks to Anthony Fu for the outstanding contributions to open source.