Skip to content

Commit ce925b4

Browse files
committed
feat: support passing flat config to the first arg
1 parent 5abe2ad commit ce925b4

File tree

1 file changed

+22
-1
lines changed

1 file changed

+22
-1
lines changed

src/factory.ts

+22-1
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,21 @@ import {
2424
import type { OptionsConfig } from './types'
2525
import { combine } from './utils'
2626

27+
const flatConfigProps: (keyof FlatESLintConfigItem)[] = [
28+
'files',
29+
'ignores',
30+
'languageOptions',
31+
'linterOptions',
32+
'processor',
33+
'plugins',
34+
'rules',
35+
'settings',
36+
]
37+
2738
/**
2839
* Construct an array of ESLint flat config items.
2940
*/
30-
export function antfu(options: OptionsConfig = {}, ...userConfigs: (FlatESLintConfigItem | FlatESLintConfigItem[])[]) {
41+
export function antfu(options: OptionsConfig & FlatESLintConfigItem = {}, ...userConfigs: (FlatESLintConfigItem | FlatESLintConfigItem[])[]) {
3142
const isInEditor = options.isInEditor ?? !!((process.env.VSCODE_PID || process.env.JETBRAINS_IDE) && !process.env.CI)
3243
const enableVue = options.vue ?? (isPackageExists('vue') || isPackageExists('nuxt') || isPackageExists('vitepress') || isPackageExists('@slidev/cli'))
3344
const enableTypeScript = options.typescript ?? (isPackageExists('typescript'))
@@ -85,6 +96,16 @@ export function antfu(options: OptionsConfig = {}, ...userConfigs: (FlatESLintCo
8596
if (options.markdown ?? true)
8697
configs.push(markdown({ componentExts }))
8798

99+
// User can optionally pass a flat config item to the first argument
100+
// We pick the known keys as ESLint would do schema validation
101+
const fusedConfig = flatConfigProps.reduce((acc, key) => {
102+
if (key in options)
103+
acc[key] = options[key]
104+
return acc
105+
}, {} as FlatESLintConfigItem)
106+
if (Object.keys(fusedConfig).length)
107+
configs.push([fusedConfig])
108+
88109
return combine(
89110
...configs,
90111
...userConfigs,

0 commit comments

Comments
 (0)