Skip to content

Generate types from ESLint rule schemas, with auto-completion and type-checking for rule options.

License

Notifications You must be signed in to change notification settings

hyoban/eslint-typegen

Repository files navigation

eslint-typegen

npm version npm downloads bundle JSDocs License

Generate types from ESLint rule schemas automatically, with auto-completion and type-checking for rule options.

Usage

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.

Low-level API

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)

Sponsors

Credits

The initial idea comes from @Shinigami92 via his work on eslint-define-config, thanks to him!

License

MIT License © 2023-PRESENT Anthony Fu

About

Generate types from ESLint rule schemas, with auto-completion and type-checking for rule options.

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 96.2%
  • JavaScript 3.8%