eslint-define-config v2.1.0
eslint-define-config
Provide a defineConfig function for .eslintrc.js, and a defineFlatConfig function for eslint.config.js files.
Installation
# add eslint and eslint-define-config to project’s dev dependencies
npm add --save-dev eslint eslint-define-config
# or
yarn add --dev eslint eslint-define-config
# or
pnpm add --save-dev eslint eslint-define-configUsage
By default only eslint's rules are supported. To activate auto-suggestions for Rules of specific plugins, you need to install the respective types for that plugin.
Plugins can either support their own types, or they could be supported by the community in the @eslint-types repository.
A list of community supported plugins can be found here.
.eslintrc.js
// @ts-check
const { defineConfig } = require('eslint-define-config');
/// <reference types="@eslint-types/typescript-eslint" />
module.exports = defineConfig({
root: true,
rules: {
// rules...
},
});Flat Config
eslint.config.js
// @ts-check
const { defineFlatConfig } = require('eslint-define-config');
/// <reference types="@eslint-types/typescript-eslint" />
module.exports = defineFlatConfig([
'eslint:recommended',
{
plugins: {
// plugins...
},
rules: {
// rules...
},
},
]);Why?
Improve your eslint configuration experience with:
- auto-suggestions
- type checking (Use
// @ts-checkat the first line in your.eslintrc.jsoreslint.config.js) - documentation
- deprecation warnings
Video
Click on the thumbnail to play the video
Want to support your own plugin?
:warning: This feature is very new and requires the support of the respective plugin owners
Add a declare module to your plugin package like this:
declare module 'eslint-define-config' {
export interface CustomRuleOptions {
/**
* Require consistently using either `T[]` or `Array<T>` for arrays.
*
* @see [array-type](https://typescript-eslint.io/rules/array-type)
*/
'@typescript-eslint/array-type': [
{
default?: 'array' | 'generic' | 'array-simple';
readonly?: 'array' | 'generic' | 'array-simple';
},
];
// ... more Rules
}
}There are other interfaces that can be extended.
CustomExtendsCustomParserOptionsCustomParsersCustomPluginsCustomSettings
Credits
- Proposal Idea
- Vite and Evan You for the idea
- @antfu and his tweet
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago