1
- /* eslint-disable @typescript-eslint/no-unused-vars */
2
1
import { Nuxt } from '@nuxt/schema'
3
2
import { CheckerOptions , ModuleOptions } from '../module'
4
- import { defineNuxtModule , addVitePlugin , addWebpackPlugin , useLogger } from '@nuxt/kit'
5
- import vitePluginEslint from 'vite-plugin-eslint '
3
+ import { addVitePlugin , addWebpackPlugin , useLogger } from '@nuxt/kit'
4
+ import vitePluginEslint from 'vite-plugin-eslint2 '
6
5
import EslintWebpackPlugin from 'eslint-webpack-plugin'
7
6
import { relative } from 'pathe'
8
7
import { watch } from 'chokidar'
8
+ import { existsSync } from 'fs'
9
+ import { resolve } from 'path'
9
10
10
11
const logger = useLogger ( 'nuxt:eslint:checker' )
11
12
13
+ const flatConfigFiles = [
14
+ 'eslint.config.js' ,
15
+ 'eslint.config.mjs' ,
16
+ 'eslint.config.cjs' ,
17
+ ]
18
+
12
19
export function setupESLintChecker ( moduleOptions : ModuleOptions , nuxt : Nuxt ) {
13
20
// TODO: maybe support build mode later on
14
21
if ( ! nuxt . options . dev ) {
@@ -19,8 +26,6 @@ export function setupESLintChecker(moduleOptions: ModuleOptions, nuxt: Nuxt) {
19
26
cache : true ,
20
27
include : [ `${ nuxt . options . srcDir } /**/*.{js,jsx,ts,tsx,vue}` ] ,
21
28
exclude : [ '**/node_modules/**' , nuxt . options . buildDir ] ,
22
- eslintPath : 'eslint' ,
23
- formatter : 'stylish' ,
24
29
lintOnStart : true ,
25
30
emitWarning : true ,
26
31
emitError : true ,
@@ -29,13 +34,16 @@ export function setupESLintChecker(moduleOptions: ModuleOptions, nuxt: Nuxt) {
29
34
...( typeof moduleOptions . checker === 'boolean' ? { } : moduleOptions . checker || { } ) ,
30
35
}
31
36
37
+ const isUsingFlatConfig = process . env . ESLINT_USE_FLAT_CONFIG || flatConfigFiles . some ( file => existsSync ( resolve ( nuxt . options . rootDir , file ) ) )
38
+
32
39
const configPaths = [
33
40
'.eslintignore' ,
34
41
'.eslintrc' ,
35
42
'.eslintrc.js' ,
36
43
'.eslintrc.yaml' ,
37
44
'.eslintrc.yml' ,
38
45
'.eslintrc.json' ,
46
+ ...flatConfigFiles ,
39
47
] . map ( path => relative ( nuxt . options . rootDir , path ) )
40
48
41
49
if ( nuxt . options . watch ) {
@@ -49,7 +57,18 @@ export function setupESLintChecker(moduleOptions: ModuleOptions, nuxt: Nuxt) {
49
57
nuxt . hook ( 'close' , ( ) => watcher . close ( ) )
50
58
}
51
59
52
- addVitePlugin ( ( ) => vitePluginEslint ( options ) , { server : false } )
60
+ addVitePlugin ( ( ) => {
61
+ const viteOptions = {
62
+ linkInWorker : true ,
63
+ ...options ,
64
+ ...options . vite ,
65
+ }
66
+
67
+ // https://github.com/ModyQyW/vite-plugin-eslint2#eslintpath
68
+ viteOptions . eslintPath ||= isUsingFlatConfig ? 'eslint/use-at-your-own-risk' : 'eslint'
69
+
70
+ return vitePluginEslint ( viteOptions )
71
+ } , { server : false } )
53
72
54
73
addWebpackPlugin ( ( ) => {
55
74
const webpackOptions = {
0 commit comments