1
- import { ESLint } from 'eslint ' ;
1
+ import { writeFile } from 'fs/promises ' ;
2
2
import { dirname , join } from 'path' ;
3
3
import { fileURLToPath } from 'url' ;
4
4
import { PluginConfig } from '@code-pushup/models' ;
5
5
import { name , version } from '../../package.json' ;
6
6
import { ESLintPluginConfig , eslintPluginConfigSchema } from './config' ;
7
7
import { listAuditsAndGroups } from './meta' ;
8
- import { createRunnerConfig } from './runner' ;
8
+ import { ESLINTRC_PATH , createRunnerConfig } from './runner' ;
9
+ import { setupESLint } from './setup' ;
9
10
10
11
/**
11
12
* Instantiates Code PushUp ESLint plugin for use in core config.
@@ -32,13 +33,16 @@ export async function eslintPlugin(
32
33
) : Promise < PluginConfig > {
33
34
const { eslintrc, patterns } = eslintPluginConfigSchema . parse ( config ) ;
34
35
35
- const eslint = new ESLint ( {
36
- overrideConfigFile : eslintrc ,
37
- useEslintrc : false ,
38
- } ) ;
36
+ const eslint = setupESLint ( eslintrc ) ;
39
37
40
38
const { audits, groups } = await listAuditsAndGroups ( eslint , patterns ) ;
41
39
40
+ // save inline config to file so runner can access it later
41
+ if ( typeof eslintrc !== 'string' ) {
42
+ await writeFile ( ESLINTRC_PATH , JSON . stringify ( eslintrc ) ) ;
43
+ }
44
+ const eslintrcPath = typeof eslintrc === 'string' ? eslintrc : ESLINTRC_PATH ;
45
+
42
46
const runnerScriptPath = join (
43
47
fileURLToPath ( dirname ( import . meta. url ) ) ,
44
48
'bin.js' ,
@@ -56,6 +60,11 @@ export async function eslintPlugin(
56
60
audits,
57
61
groups,
58
62
59
- runner : createRunnerConfig ( runnerScriptPath , audits , eslintrc , patterns ) ,
63
+ runner : createRunnerConfig (
64
+ runnerScriptPath ,
65
+ audits ,
66
+ eslintrcPath ,
67
+ patterns ,
68
+ ) ,
60
69
} ;
61
70
}
0 commit comments