deskoh / typescript-eslint-util

Utility script for porting ESLint rules to `@typescript-eslint`

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

typescript-eslint-util

Script to help migrate existing for ESLint rules to @typescript-eslint equivalent.

// index.js
const generate = require('./generator')
generate('./config/eslint-recommended.eslintrc.js')

// Output:
// Following ESLint rules has @typescript-eslint equivalent:
//   no-unused-vars

generate('./config/eslint-recommended.eslintrc.js', {
  disableEslintRulesCheckedByTypescript: true,
})

// Output:
// Following ESLint rules has @typescript-eslint equivalent:
//   no-unused-vars
// Following ESLint rules can be turned off as they are checked by TypeScript:
//   getter-return
//   no-const-assign
//   no-dupe-args
//   no-dupe-class-members
//   no-dupe-keys
//   no-new-symbol
//   no-redeclare
//   no-this-before-super
//   no-undef
//   no-unreachable
//   valid-typeof

Script can also be used to derive ESLint rules overrides required if the rules also extends from @typescript-eslint/recommended and @typescript-eslint/recommended-requiring-type-checking.

const desiredRules = generate('./config/airbnb-base.eslintrc.js', {
  extendsTypescriptEslintRecommended: true,
  replaceTypescriptEslintEquivalents: false,
})

// Output:
// Overriding @typescript-eslint rules to original ESLint equivalent
//    @typescript-eslint/camelcase
//    @typescript-eslint/no-empty-function
//    @typescript-eslint/no-unused-vars
//    @typescript-eslint/no-use-before-define
//    @typescript-eslint/require-await
//    prefer-const

Finally, the rules derived can be used to validate another eslintrc config.

const desiredRules = generate('./config/airbnb-base.eslintrc.js', {
  extendsTypescriptEslintRecommended: true,
  replaceTypescriptEslintEquivalents: false,
})

validate(desiredRules, './config/custom.eslintrc')

// Output:
// ...
// Missing rules:
// Extraneous rules:
// Different rules:

About

Utility script for porting ESLint rules to `@typescript-eslint`


Languages

Language:JavaScript 100.0%