Skip to content

Commit

Permalink
feat(eslint-config): enable import plugin (#378)
Browse files Browse the repository at this point in the history
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
  • Loading branch information
antfu and autofix-ci[bot] committed Apr 5, 2024
1 parent 9dfbc52 commit d5f6f66
Show file tree
Hide file tree
Showing 13 changed files with 93 additions and 16 deletions.
2 changes: 2 additions & 0 deletions packages/eslint-config/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,11 @@
"@typescript-eslint/parser": "^7.5.0",
"eslint-config-flat-gitignore": "^0.1.5",
"eslint-flat-config-utils": "^0.2.0",
"eslint-plugin-import-x": "^0.5.0",
"eslint-plugin-vue": "^9.24.0",
"globals": "^15.0.0",
"pathe": "^1.1.2",
"tslib": "^2.6.2",
"vue-eslint-parser": "^9.4.2"
},
"devDependencies": {
Expand Down
2 changes: 1 addition & 1 deletion packages/eslint-config/src/flat/configs/disables.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { join } from 'pathe'
import type { FlatConfigItem } from 'eslint-flat-config-utils'
import { GLOB_EXTS } from '../constants'
import type { NuxtESLintConfigOptions } from '../types'
import type { FlatConfigItem } from 'eslint-flat-config-utils'
import { resolveOptions } from '../utils'

export default function disables(options: NuxtESLintConfigOptions): FlatConfigItem[] {
Expand Down
32 changes: 32 additions & 0 deletions packages/eslint-config/src/flat/configs/import.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import pluginImport from 'eslint-plugin-import-x'
import type { FlatConfigItem } from 'eslint-flat-config-utils'
import type { NuxtESLintConfigOptions } from '../types'
import { resolveOptions } from '../utils'

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

return [
{
name: 'nuxt/import/rules',
plugins: {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
import: pluginImport as any,
},
rules: {
'import/first': 'error',
'import/no-duplicates': 'error',
'import/no-mutable-exports': 'error',
'import/no-named-default': 'error',
'import/no-self-import': 'error',

...resolved.features.stylistic
? {
'import/order': 'error',
'import/newline-after-import': ['error', { count: 1 }],
}
: {},
},
},
]
}
4 changes: 2 additions & 2 deletions packages/eslint-config/src/flat/configs/nuxt.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { join } from 'pathe'
import type { NuxtESLintConfigOptions } from '../types'
import nuxtPlugin from '@nuxt/eslint-plugin'
import { GLOB_EXTS } from '../constants'
import type { FlatConfigItem } from 'eslint-flat-config-utils'
import type { NuxtESLintConfigOptions } from '../types'
import { GLOB_EXTS } from '../constants'
import { resolveOptions } from '../utils'

export default function nuxt(options: NuxtESLintConfigOptions): FlatConfigItem[] {
Expand Down
2 changes: 1 addition & 1 deletion packages/eslint-config/src/flat/configs/typescript.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import parserTs from '@typescript-eslint/parser'
import pluginTs from '@typescript-eslint/eslint-plugin'
import type { FlatConfigItem } from 'eslint-flat-config-utils'
import { resolveOptions } from '../utils'
import type { NuxtESLintConfigOptions } from '@nuxt/eslint-config/flat'
import { resolveOptions } from '../utils'

export default function typescript(options: NuxtESLintConfigOptions): FlatConfigItem[] {
const resolved = resolveOptions(options)
Expand Down
2 changes: 1 addition & 1 deletion packages/eslint-config/src/flat/configs/vue.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ import parserTs from '@typescript-eslint/parser'

// @ts-expect-error missing types
import pluginVue from 'eslint-plugin-vue'
import type { FlatConfigItem } from 'eslint-flat-config-utils'
import type { NuxtESLintConfigOptions } from '../types'
import { removeUndefined, resolveOptions } from '../utils'
import type { FlatConfigItem } from 'eslint-flat-config-utils'

export default function vue(options: NuxtESLintConfigOptions): FlatConfigItem[] {
const resolved = resolveOptions(options)
Expand Down
9 changes: 5 additions & 4 deletions packages/eslint-config/src/flat/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
import type { FlatConfigItem, ResolvableFlatConfig, FlatConfigComposer } from 'eslint-flat-config-utils'
import { composer } from 'eslint-flat-config-utils'
import gitignore from 'eslint-config-flat-gitignore'
import type { NuxtESLintConfigOptions } from './types'
import disables from './configs/disables'
import nuxt from './configs/nuxt'
Expand All @@ -6,11 +9,8 @@ import javascript from './configs/javascript'
import typescript from './configs/typescript'
import vue from './configs/vue'
import stylistic from './configs/stylistic'
import type { FlatConfigItem, ResolvableFlatConfig } from 'eslint-flat-config-utils'
import type { FlatConfigComposer } from 'eslint-flat-config-utils'
import { composer } from 'eslint-flat-config-utils'
import { resolveOptions } from './utils'
import gitignore from 'eslint-config-flat-gitignore'
import imports from './configs/import'

export * from './types'

Expand Down Expand Up @@ -47,6 +47,7 @@ export function createConfigForNuxt(options: NuxtESLintConfigOptions = {}): Flat
javascript(),
typescript(resolved),
vue(resolved),
imports(resolved),
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,9 @@ exports[`flat config composition > custom src dirs 1`] = `
],
"name": "nuxt/vue/rules",
},
{
"name": "nuxt/import/rules",
},
{
"files": [
"src1/layouts/**/*.{js,ts,jsx,tsx,vue}",
Expand Down Expand Up @@ -168,6 +171,9 @@ exports[`flat config composition > empty 1`] = `
],
"name": "nuxt/vue/rules",
},
{
"name": "nuxt/import/rules",
},
{
"files": [
"layouts/**/*.{js,ts,jsx,tsx,vue}",
Expand Down
2 changes: 1 addition & 1 deletion packages/eslint-config/test/flat-compose.test.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { describe, expect, it } from 'vitest'
import { createConfigForNuxt } from '../src/flat'
import type { FlatConfigItem } from 'eslint-flat-config-utils'
import { createConfigForNuxt } from '../src/flat'

const cwd = process.cwd()

Expand Down
2 changes: 1 addition & 1 deletion packages/module/src/config-addons/globals.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import type { Nuxt } from '@nuxt/schema'
import type { Unimport } from 'unimport'
import type { ESLintConfigGenAddon } from '../types'
import type { FlatConfigItem } from 'eslint-flat-config-utils'
import type { ESLintConfigGenAddon } from '../types'

export function createAddonGlobals(nuxt: Nuxt): ESLintConfigGenAddon {
let unimport: Unimport
Expand Down
6 changes: 3 additions & 3 deletions packages/module/src/modules/checker.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import type { Nuxt } from '@nuxt/schema'
import type { CheckerOptions, ModuleOptions } from '../module'
import { existsSync } from 'fs'
import { addVitePlugin, addWebpackPlugin, useLogger } from '@nuxt/kit'
import { relative, resolve } from 'pathe'
import { watch } from 'chokidar'
import { existsSync } from 'fs'
import type { Nuxt } from '@nuxt/schema'
import type { ESLintPluginOptions as ViteCheckerOptions } from 'vite-plugin-eslint2'
import type { Options as WebpackCheckerOptions } from 'eslint-webpack-plugin'
import type { CheckerOptions, ModuleOptions } from '../module'

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

Expand Down
4 changes: 2 additions & 2 deletions packages/module/src/modules/config.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import { addTemplate, createResolver } from '@nuxt/kit'
import { fileURLToPath, pathToFileURL } from 'node:url'
import { builtinModules } from 'node:module'
import { addTemplate, createResolver } from '@nuxt/kit'
import { stringifyImports } from 'unimport'
import type { Import } from 'unimport'
import { resolvePath } from 'mlly'
import type { Nuxt } from '@nuxt/schema'
import { relative, resolve, join, dirname } from 'pathe'
import { getPort } from 'get-port-please'
import type { ESLintConfigGenAddon } from '../types'
import type { NuxtESLintConfigOptions } from '@nuxt/eslint-config/flat'
import type { ESLintConfigGenAddon } from '../types'
import type { ConfigGenOptions, ModuleOptions } from '../module'
import { createAddonGlobals } from '../config-addons/globals'

Expand Down
36 changes: 36 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit d5f6f66

Please sign in to comment.