eslint-define-config
Provide a defineConfig
function for .eslintrc.js
, and a defineFlatConfig
function for eslint.config.js
files.
This project is written by a human and only partially automatically generated!
Some rules are even enhanced by hand!
Unfortunately, this has the disadvantage that not everything is immediately defined. For example, if a rule is not defined, it falls back to a basic definition.
However, the advantage is that you get documentation for pretty much everything in the code and usually get a direct link to the respective plugin or eslint rule. The types are also strictly typed.
So if you are missing something like a rule or a plugin that should also be supported or a rule definition is e.g. out of date, feel free to open an issue or PR for it.
Installation
npm add --save-dev eslint eslint-define-config
yarn add --dev eslint eslint-define-config
pnpm add --save-dev eslint eslint-define-config
Usage
.eslintrc.js
const { defineConfig } = require('eslint-define-config');
module.exports = defineConfig({
root: true,
rules: {
},
});
Flat Config
eslint.config.js
const { defineFlatConfig } = require('eslint-define-config');
module.exports = defineFlatConfig([
'eslint:recommended',
{
plugins: {
},
rules: {
},
},
]);
Why?
Improve your eslint configuration experience with:
- auto-suggestions
- type checking (Use
// @ts-check
at the first line in your .eslintrc.js
or eslint.config.js
) - documentation
- deprecation warnings
Video
Click on the thumbnail to play the video
Want to support your own plugin?
Add a declare module
to your plugin package like this:
declare module 'eslint-define-config' {
type RuleLevel = 0 | 1 | 2 | 'off' | 'warn' | 'error';
type Prepend<Tuple extends any[], Addend> = ((_: Addend, ..._1: Tuple) => any) extends (..._: infer Result) => any ? Result : never;
type RuleLevelAndOptions<Options extends any[] = any[]> = Prepend<Partial<Options>, RuleLevel>;
type RuleEntry<Options extends any[] = any[]> = RuleLevel | RuleLevelAndOptions<Options>;
type RuleConfig<Options extends any[] = any[]> = RuleEntry<Options>;
export interface Rules {
'@typescript-eslint/array-type': RuleConfig<
[
{
default?: 'array' | 'generic' | 'array-simple';
readonly?: 'array' | 'generic' | 'array-simple';
},
]
>;
}
}
Credits