Skip to content

Commit

Permalink
feat(configs): support eslint-plugin-unused-imports
Browse files Browse the repository at this point in the history
  • Loading branch information
akinoccc committed Sep 8, 2024
1 parent 95a0d10 commit 9a11cc3
Show file tree
Hide file tree
Showing 4 changed files with 57 additions and 4 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,5 @@ dist
lib

.idea

.eslint-config-inspector
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ export default defineConfig({
ts: true,
vue: true,
stylistic: true,
importx: true,
importX: true,
unusedImports: true,
ignores: ["node_modules"],
globals: {
bar: true,
Expand Down
38 changes: 38 additions & 0 deletions src/configs/unusedImports.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
import { Linter } from 'eslint'
import unusedImports from 'eslint-plugin-unused-imports'
import { CustomConfigItem, type EslintFlagConfig } from '../types'
import { isPlainObject } from '../utils'

export function getUnusedImportsConfig(unusedImportsConfig?: CustomConfigItem, useTpeScriptEslint?: boolean): EslintFlagConfig[] {
if (unusedImportsConfig) {
const unusedImportsRules: Linter.RulesRecord = {
'no-unused-vars': 'off',
'unused-imports/no-unused-imports': 'error',
'unused-imports/no-unused-vars': [
'warn',
{
vars: 'all',
varsIgnorePattern: '^_',
args: 'after-used',
argsIgnorePattern: '^_',
},
],
}

if (useTpeScriptEslint && (unusedImportsConfig === true || unusedImportsConfig['unused-imports/no-unused-vars'] !== 'off'))
Object.assign(unusedImportsRules, { '@typescript-eslint/no-unused-vars': 'off' })

if (isPlainObject(unusedImportsConfig))
Object.assign(unusedImportsRules, unusedImportsConfig)

return [
{
plugins: {
'unused-imports': unusedImports,
},
rules: unusedImportsRules,
},
]
}
return []
}
18 changes: 15 additions & 3 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,15 @@ import { ESLint } from 'eslint'
import type { CustomConfigItem, EslintFlagConfig } from './types'
import { isPlainObject } from './utils'
import { getImportConfig, getJsConfig, getStylisticConfig, getTsConfig, getVueConfig } from './configs'
import { getUnusedImportsConfig } from './configs/unusedImports'

interface AirBeConfig {
js?: CustomConfigItem
ts?: CustomConfigItem
vue?: CustomConfigItem
stylistic?: CustomConfigItem
importx?: CustomConfigItem
importX?: CustomConfigItem
unusedImports?: CustomConfigItem
ignores?: string[]
globals?: ESLint.Globals
}
Expand All @@ -21,14 +23,24 @@ interface AirBeConfig {
* @returns {EslintFlagConfig[]} 返回ESLint配置数组。
*/
const defineConfig = (config: AirBeConfig, ...customFlatConfigs: EslintFlagConfig[]): EslintFlagConfig[] => {
const { js, ts, vue, stylistic, importx, ignores, globals } = config
const {
js,
ts,
vue,
stylistic,
importX,
unusedImports,
ignores,
globals,
} = config

const eslintConfig: EslintFlagConfig[] = [
...getJsConfig(js),
...getTsConfig(ts),
...getVueConfig(vue),
...getStylisticConfig(stylistic),
...getImportConfig(importx),
...getImportConfig(importX),
...getUnusedImportsConfig(unusedImports),
]

if (Array.isArray(ignores))
Expand Down

0 comments on commit 9a11cc3

Please sign in to comment.