Skip to content

Provide a defineConfig function for .eslintrc.js files

License

Notifications You must be signed in to change notification settings

rost-git/antfu-eslint-define-config

 
 

Repository files navigation

@antfu/eslint-define-config

A fork of eslint-define-config to experiment better Flat Config support.

Changes In This Fork

1. Re-export Rules for Each Plugin

import {
  VitestRules,
  VueRules,
  // ...
} from '@antfu/eslint-define-config'

2. Allow Overriding Rules

import pluginVitest from 'eslint-plugin-vitest'
import {
  defineFlatConfig,
  VitestRules
} from '@antfu/eslint-define-config'

export default defineFlatConfig<VitestRules, /* Strict */ true>({
  plugins: {
    vitest: pluginVitest,
  },
  rules: {
    // only `vitest/` rules are allowed and will be auto-completed
    'vitest/no-async': 'error',

    // @ts-expect-error not allowed
    'indent': 'error'
  },
})

3. Support Renaming Rules

import {
  RenamePrefix,
  TypeScriptRules // { '@typescript-eslint/indent': 'error', ... }
} from '@antfu/eslint-define-config'

type RenamedRules = RenamePrefix<TypeScriptRules, '@typescript-eslint/', 'ts/'>
// { 'ts/indent': 'error', ... }

This way it could work for Flat Config plugin renaming:

import pluginTypeScript from '@typescript-eslint/eslint-plugin'
import {
  defineFlatConfig,
  RenamePrefix,
  TypeScriptRules
} from '@antfu/eslint-define-config'

type RenamedRules = RenamePrefix<TypeScriptRules, '@typescript-eslint/', 'ts/'>

export default defineFlatConfig<RenamedRules>({
  plugins: {
    ts: pluginTypeScript, // renames to `ts/`
  },
  rules: {
    'ts/indent': 'error',

    // now we have auto-completion for `ts/` rules
  },
})

About

Provide a defineConfig function for .eslintrc.js files

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 87.8%
  • JavaScript 10.9%
  • Shell 1.3%