Skip to content

Commit d5f6f66

Browse files
antfuautofix-ci[bot]
andauthoredApr 5, 2024··
feat(eslint-config): enable import plugin (#378)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
1 parent 9dfbc52 commit d5f6f66

File tree

13 files changed

+93
-16
lines changed

13 files changed

+93
-16
lines changed
 

‎packages/eslint-config/package.json

+2
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,11 @@
4545
"@typescript-eslint/parser": "^7.5.0",
4646
"eslint-config-flat-gitignore": "^0.1.5",
4747
"eslint-flat-config-utils": "^0.2.0",
48+
"eslint-plugin-import-x": "^0.5.0",
4849
"eslint-plugin-vue": "^9.24.0",
4950
"globals": "^15.0.0",
5051
"pathe": "^1.1.2",
52+
"tslib": "^2.6.2",
5153
"vue-eslint-parser": "^9.4.2"
5254
},
5355
"devDependencies": {

‎packages/eslint-config/src/flat/configs/disables.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { join } from 'pathe'
2+
import type { FlatConfigItem } from 'eslint-flat-config-utils'
23
import { GLOB_EXTS } from '../constants'
34
import type { NuxtESLintConfigOptions } from '../types'
4-
import type { FlatConfigItem } from 'eslint-flat-config-utils'
55
import { resolveOptions } from '../utils'
66

77
export default function disables(options: NuxtESLintConfigOptions): FlatConfigItem[] {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import pluginImport from 'eslint-plugin-import-x'
2+
import type { FlatConfigItem } from 'eslint-flat-config-utils'
3+
import type { NuxtESLintConfigOptions } from '../types'
4+
import { resolveOptions } from '../utils'
5+
6+
export default function imports(options: NuxtESLintConfigOptions): FlatConfigItem[] {
7+
const resolved = resolveOptions(options)
8+
9+
return [
10+
{
11+
name: 'nuxt/import/rules',
12+
plugins: {
13+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
14+
import: pluginImport as any,
15+
},
16+
rules: {
17+
'import/first': 'error',
18+
'import/no-duplicates': 'error',
19+
'import/no-mutable-exports': 'error',
20+
'import/no-named-default': 'error',
21+
'import/no-self-import': 'error',
22+
23+
...resolved.features.stylistic
24+
? {
25+
'import/order': 'error',
26+
'import/newline-after-import': ['error', { count: 1 }],
27+
}
28+
: {},
29+
},
30+
},
31+
]
32+
}

‎packages/eslint-config/src/flat/configs/nuxt.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { join } from 'pathe'
2-
import type { NuxtESLintConfigOptions } from '../types'
32
import nuxtPlugin from '@nuxt/eslint-plugin'
4-
import { GLOB_EXTS } from '../constants'
53
import type { FlatConfigItem } from 'eslint-flat-config-utils'
4+
import type { NuxtESLintConfigOptions } from '../types'
5+
import { GLOB_EXTS } from '../constants'
66
import { resolveOptions } from '../utils'
77

88
export default function nuxt(options: NuxtESLintConfigOptions): FlatConfigItem[] {

‎packages/eslint-config/src/flat/configs/typescript.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import parserTs from '@typescript-eslint/parser'
22
import pluginTs from '@typescript-eslint/eslint-plugin'
33
import type { FlatConfigItem } from 'eslint-flat-config-utils'
4-
import { resolveOptions } from '../utils'
54
import type { NuxtESLintConfigOptions } from '@nuxt/eslint-config/flat'
5+
import { resolveOptions } from '../utils'
66

77
export default function typescript(options: NuxtESLintConfigOptions): FlatConfigItem[] {
88
const resolved = resolveOptions(options)

‎packages/eslint-config/src/flat/configs/vue.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ import parserTs from '@typescript-eslint/parser'
33

44
// @ts-expect-error missing types
55
import pluginVue from 'eslint-plugin-vue'
6+
import type { FlatConfigItem } from 'eslint-flat-config-utils'
67
import type { NuxtESLintConfigOptions } from '../types'
78
import { removeUndefined, resolveOptions } from '../utils'
8-
import type { FlatConfigItem } from 'eslint-flat-config-utils'
99

1010
export default function vue(options: NuxtESLintConfigOptions): FlatConfigItem[] {
1111
const resolved = resolveOptions(options)

‎packages/eslint-config/src/flat/index.ts

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
import type { FlatConfigItem, ResolvableFlatConfig, FlatConfigComposer } from 'eslint-flat-config-utils'
2+
import { composer } from 'eslint-flat-config-utils'
3+
import gitignore from 'eslint-config-flat-gitignore'
14
import type { NuxtESLintConfigOptions } from './types'
25
import disables from './configs/disables'
36
import nuxt from './configs/nuxt'
@@ -6,11 +9,8 @@ import javascript from './configs/javascript'
69
import typescript from './configs/typescript'
710
import vue from './configs/vue'
811
import stylistic from './configs/stylistic'
9-
import type { FlatConfigItem, ResolvableFlatConfig } from 'eslint-flat-config-utils'
10-
import type { FlatConfigComposer } from 'eslint-flat-config-utils'
11-
import { composer } from 'eslint-flat-config-utils'
1212
import { resolveOptions } from './utils'
13-
import gitignore from 'eslint-config-flat-gitignore'
13+
import imports from './configs/import'
1414

1515
export * from './types'
1616

@@ -47,6 +47,7 @@ export function createConfigForNuxt(options: NuxtESLintConfigOptions = {}): Flat
4747
javascript(),
4848
typescript(resolved),
4949
vue(resolved),
50+
imports(resolved),
5051
)
5152
}
5253

‎packages/eslint-config/test/__snapshots__/flat-compose.test.ts.snap

+6
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,9 @@ exports[`flat config composition > custom src dirs 1`] = `
6969
],
7070
"name": "nuxt/vue/rules",
7171
},
72+
{
73+
"name": "nuxt/import/rules",
74+
},
7275
{
7376
"files": [
7477
"src1/layouts/**/*.{js,ts,jsx,tsx,vue}",
@@ -168,6 +171,9 @@ exports[`flat config composition > empty 1`] = `
168171
],
169172
"name": "nuxt/vue/rules",
170173
},
174+
{
175+
"name": "nuxt/import/rules",
176+
},
171177
{
172178
"files": [
173179
"layouts/**/*.{js,ts,jsx,tsx,vue}",

‎packages/eslint-config/test/flat-compose.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { describe, expect, it } from 'vitest'
2-
import { createConfigForNuxt } from '../src/flat'
32
import type { FlatConfigItem } from 'eslint-flat-config-utils'
3+
import { createConfigForNuxt } from '../src/flat'
44

55
const cwd = process.cwd()
66

‎packages/module/src/config-addons/globals.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import type { Nuxt } from '@nuxt/schema'
22
import type { Unimport } from 'unimport'
3-
import type { ESLintConfigGenAddon } from '../types'
43
import type { FlatConfigItem } from 'eslint-flat-config-utils'
4+
import type { ESLintConfigGenAddon } from '../types'
55

66
export function createAddonGlobals(nuxt: Nuxt): ESLintConfigGenAddon {
77
let unimport: Unimport

‎packages/module/src/modules/checker.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
import type { Nuxt } from '@nuxt/schema'
2-
import type { CheckerOptions, ModuleOptions } from '../module'
1+
import { existsSync } from 'fs'
32
import { addVitePlugin, addWebpackPlugin, useLogger } from '@nuxt/kit'
43
import { relative, resolve } from 'pathe'
54
import { watch } from 'chokidar'
6-
import { existsSync } from 'fs'
5+
import type { Nuxt } from '@nuxt/schema'
76
import type { ESLintPluginOptions as ViteCheckerOptions } from 'vite-plugin-eslint2'
87
import type { Options as WebpackCheckerOptions } from 'eslint-webpack-plugin'
8+
import type { CheckerOptions, ModuleOptions } from '../module'
99

1010
const logger = useLogger('nuxt:eslint:checker')
1111

‎packages/module/src/modules/config.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
import { addTemplate, createResolver } from '@nuxt/kit'
21
import { fileURLToPath, pathToFileURL } from 'node:url'
32
import { builtinModules } from 'node:module'
3+
import { addTemplate, createResolver } from '@nuxt/kit'
44
import { stringifyImports } from 'unimport'
55
import type { Import } from 'unimport'
66
import { resolvePath } from 'mlly'
77
import type { Nuxt } from '@nuxt/schema'
88
import { relative, resolve, join, dirname } from 'pathe'
99
import { getPort } from 'get-port-please'
10-
import type { ESLintConfigGenAddon } from '../types'
1110
import type { NuxtESLintConfigOptions } from '@nuxt/eslint-config/flat'
11+
import type { ESLintConfigGenAddon } from '../types'
1212
import type { ConfigGenOptions, ModuleOptions } from '../module'
1313
import { createAddonGlobals } from '../config-addons/globals'
1414

‎pnpm-lock.yaml

+36
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)
Please sign in to comment.