Generate types from ESLint rule schemas automatically, with auto-completion and type-checking for rule options.
npm i eslint-typegen
In your eslint.config.mjs
, wrap the export with typegen
function:
// @ts-check
/// <reference path="./eslint-typegen.d.ts" />
import typegen from 'eslint-typegen'
export default typegen(
[
// ...your normal eslint flat config
]
)
Run ESLint once, an eslint-typegen.d.ts
file will be generated to augment ESLint's Linter.RulesRecord
types, to provide you with auto-completion and type-checking for your ESLint rules configuration based on the ESLint plugins you are using.
It will caluclate the hash from the plugins in your flat config, and only regenerate the types when the hash changes. If you want to force regenerate the types, you can delete the
eslint-typegen.d.ts
file and run ESLint again.
You can find low-level APIs in the eslint-typegen/core
modules.
import fs from 'node:fs/promises'
import { pluginsToRulesDTS } from 'eslint-typegen/core'
import pluginTs from '@typescript-eslint/eslint-plugin'
import pluginN from 'eslint-plugin-n'
const dts = await pluginsToRulesDTS({
'@typescript-eslint': pluginTs,
'n': pluginN,
})
await fs.writeFile('eslint-typegen.d.ts', dts)
The initial idea comes from @Shinigami92 via his work on eslint-define-config
, thanks to him!
MIT License © 2023-PRESENT Anthony Fu