Skip to content

Commit

Permalink
feat: allow customize files, close #327
Browse files Browse the repository at this point in the history
  • Loading branch information
antfu committed Nov 22, 2023
1 parent 86ca184 commit 44d9e94
Show file tree
Hide file tree
Showing 9 changed files with 47 additions and 25 deletions.
1 change: 1 addition & 0 deletions src/configs/javascript.ts
Expand Up @@ -10,6 +10,7 @@ export async function javascript(
isInEditor = false,
overrides = {},
} = options

return [
{
languageOptions: {
Expand Down
9 changes: 6 additions & 3 deletions src/configs/jsonc.ts
@@ -1,9 +1,12 @@
import type { FlatConfigItem, OptionsOverrides, OptionsStylistic } from '../types'
import type { FlatConfigItem, OptionsFiles, OptionsOverrides, OptionsStylistic } from '../types'
import { GLOB_JSON, GLOB_JSON5, GLOB_JSONC } from '../globs'
import { interopDefault } from '../utils'

export async function jsonc(options: OptionsStylistic & OptionsOverrides = {}): Promise<FlatConfigItem[]> {
export async function jsonc(
options: OptionsFiles & OptionsStylistic & OptionsOverrides = {},
): Promise<FlatConfigItem[]> {
const {
files = [GLOB_JSON, GLOB_JSON5, GLOB_JSONC],
overrides = {},
stylistic = true,
} = options
Expand All @@ -28,7 +31,7 @@ export async function jsonc(options: OptionsStylistic & OptionsOverrides = {}):
},
},
{
files: [GLOB_JSON, GLOB_JSON5, GLOB_JSONC],
files,
languageOptions: {
parser: parserJsonc,
},
Expand Down
9 changes: 6 additions & 3 deletions src/configs/markdown.ts
@@ -1,10 +1,13 @@
import type { FlatConfigItem, OptionsComponentExts, OptionsOverrides } from '../types'
import type { FlatConfigItem, OptionsComponentExts, OptionsFiles, OptionsOverrides } from '../types'
import { GLOB_MARKDOWN, GLOB_MARKDOWN_CODE } from '../globs'
import { interopDefault } from '../utils'

export async function markdown(options: OptionsComponentExts & OptionsOverrides = {}): Promise<FlatConfigItem[]> {
export async function markdown(
options: OptionsFiles & OptionsComponentExts & OptionsOverrides = {},
): Promise<FlatConfigItem[]> {
const {
componentExts = [],
files = [GLOB_MARKDOWN],
overrides = {},
} = options

Expand All @@ -17,7 +20,7 @@ export async function markdown(options: OptionsComponentExts & OptionsOverrides
},
},
{
files: [GLOB_MARKDOWN],
files,
name: 'antfu:markdown:processor',
processor: 'markdown/markdown',
},
Expand Down
7 changes: 4 additions & 3 deletions src/configs/react.ts
@@ -1,6 +1,6 @@
import { isPackageExists } from 'local-pkg'
import { ensurePackages, interopDefault } from '../utils'
import type { FlatConfigItem, OptionsHasTypeScript, OptionsOverrides, OptionsStylistic } from '../types'
import type { FlatConfigItem, OptionsFiles, OptionsHasTypeScript, OptionsOverrides } from '../types'
import { GLOB_JSX, GLOB_TSX } from '../globs'

// react refresh
Expand All @@ -9,9 +9,10 @@ const ReactRefreshAllowConstantExportPackages = [
]

export async function react(
options: OptionsHasTypeScript & OptionsOverrides & OptionsStylistic = {},
options: OptionsHasTypeScript & OptionsOverrides & OptionsFiles = {},
): Promise<FlatConfigItem[]> {
const {
files = [GLOB_JSX, GLOB_TSX],
overrides = {},
typescript = true,
} = options
Expand Down Expand Up @@ -46,7 +47,7 @@ export async function react(
},
},
{
files: [GLOB_JSX, GLOB_TSX],
files,
languageOptions: {
parserOptions: {
ecmaFeatures: {
Expand Down
9 changes: 6 additions & 3 deletions src/configs/test.ts
@@ -1,9 +1,12 @@
import { interopDefault } from '../utils'
import type { FlatConfigItem, OptionsIsInEditor, OptionsOverrides } from '../types'
import type { FlatConfigItem, OptionsFiles, OptionsIsInEditor, OptionsOverrides } from '../types'
import { GLOB_TESTS } from '../globs'

export async function test(options: OptionsIsInEditor & OptionsOverrides = {}): Promise<FlatConfigItem[]> {
export async function test(
options: OptionsFiles & OptionsIsInEditor & OptionsOverrides = {},
): Promise<FlatConfigItem[]> {
const {
files = GLOB_TESTS,
isInEditor = false,
overrides = {},
} = options
Expand Down Expand Up @@ -32,7 +35,7 @@ export async function test(options: OptionsIsInEditor & OptionsOverrides = {}):
},
},
{
files: GLOB_TESTS,
files,
name: 'antfu:test:rules',
rules: {
'node/prefer-global/process': 'off',
Expand Down
16 changes: 9 additions & 7 deletions src/configs/typescript.ts
@@ -1,17 +1,22 @@
import process from 'node:process'
import type { FlatConfigItem, OptionsComponentExts, OptionsOverrides, OptionsTypeScriptParserOptions, OptionsTypeScriptWithTypes } from '../types'
import type { FlatConfigItem, OptionsComponentExts, OptionsFiles, OptionsOverrides, OptionsTypeScriptParserOptions, OptionsTypeScriptWithTypes } from '../types'
import { GLOB_SRC } from '../globs'
import { pluginAntfu } from '../plugins'
import { interopDefault, renameRules, toArray } from '../utils'

export async function typescript(
options?: OptionsComponentExts & OptionsOverrides & OptionsTypeScriptWithTypes & OptionsTypeScriptParserOptions,
options: OptionsFiles & OptionsComponentExts & OptionsOverrides & OptionsTypeScriptWithTypes & OptionsTypeScriptParserOptions = {},
): Promise<FlatConfigItem[]> {
const {
componentExts = [],
overrides = {},
parserOptions = {},
} = options ?? {}
} = options

const files = options.files ?? [
GLOB_SRC,
...componentExts.map(ext => `**/*.${ext}`),
]

const typeAwareRules: FlatConfigItem['rules'] = {
'dot-notation': 'off',
Expand Down Expand Up @@ -57,10 +62,7 @@ export async function typescript(
},
},
{
files: [
GLOB_SRC,
...componentExts.map(ext => `**/*.${ext}`),
],
files,
languageOptions: {
parser: parserTs,
parserOptions: {
Expand Down
7 changes: 4 additions & 3 deletions src/configs/vue.ts
@@ -1,11 +1,12 @@
import { interopDefault } from '../utils'
import type { FlatConfigItem, OptionsHasTypeScript, OptionsOverrides, OptionsStylistic } from '../types'
import type { FlatConfigItem, OptionsFiles, OptionsHasTypeScript, OptionsOverrides, OptionsStylistic } from '../types'
import { GLOB_VUE } from '../globs'

export async function vue(
options: OptionsHasTypeScript & OptionsOverrides & OptionsStylistic = {},
options: OptionsHasTypeScript & OptionsOverrides & OptionsStylistic & OptionsFiles = {},
): Promise<FlatConfigItem[]> {
const {
files = [GLOB_VUE],
overrides = {},
stylistic = true,
} = options
Expand All @@ -31,7 +32,7 @@ export async function vue(
},
},
{
files: [GLOB_VUE],
files,
languageOptions: {
parser: parserVue,
parserOptions: {
Expand Down
7 changes: 4 additions & 3 deletions src/configs/yaml.ts
@@ -1,11 +1,12 @@
import type { FlatConfigItem, OptionsOverrides, OptionsStylistic } from '../types'
import type { FlatConfigItem, OptionsFiles, OptionsOverrides, OptionsStylistic } from '../types'
import { GLOB_YAML } from '../globs'
import { interopDefault } from '../utils'

export async function yaml(
options: OptionsOverrides & OptionsStylistic = {},
options: OptionsOverrides & OptionsStylistic & OptionsFiles = {},
): Promise<FlatConfigItem[]> {
const {
files = [GLOB_YAML],
overrides = {},
stylistic = true,
} = options
Expand All @@ -31,7 +32,7 @@ export async function yaml(
},
},
{
files: [GLOB_YAML],
files,
languageOptions: {
parser: parserYaml,
},
Expand Down
7 changes: 7 additions & 0 deletions src/types.ts
Expand Up @@ -70,6 +70,13 @@ export type FlatConfigItem = Omit<FlatESLintConfigItem<Rules, false>, 'plugins'>

export type UserConfigItem = FlatConfigItem | Linter.FlatConfig

export interface OptionsFiles {
/**
* Override the `files` option to provide custom globs.
*/
files?: string[]
}

export interface OptionsComponentExts {
/**
* Additional extensions for components.
Expand Down

0 comments on commit 44d9e94

Please sign in to comment.