1- import { ESLint } from 'eslint ' ;
1+ import { writeFile } from 'fs/promises ' ;
22import { dirname , join } from 'path' ;
33import { fileURLToPath } from 'url' ;
44import { PluginConfig } from '@code-pushup/models' ;
55import { name , version } from '../../package.json' ;
66import { ESLintPluginConfig , eslintPluginConfigSchema } from './config' ;
77import { listAuditsAndGroups } from './meta' ;
8- import { createRunnerConfig } from './runner' ;
8+ import { ESLINTRC_PATH , createRunnerConfig } from './runner' ;
9+ import { setupESLint } from './setup' ;
910
1011/**
1112 * Instantiates Code PushUp ESLint plugin for use in core config.
@@ -32,13 +33,16 @@ export async function eslintPlugin(
3233) : Promise < PluginConfig > {
3334 const { eslintrc, patterns } = eslintPluginConfigSchema . parse ( config ) ;
3435
35- const eslint = new ESLint ( {
36- overrideConfigFile : eslintrc ,
37- useEslintrc : false ,
38- } ) ;
36+ const eslint = setupESLint ( eslintrc ) ;
3937
4038 const { audits, groups } = await listAuditsAndGroups ( eslint , patterns ) ;
4139
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+
4246 const runnerScriptPath = join (
4347 fileURLToPath ( dirname ( import . meta. url ) ) ,
4448 'bin.js' ,
@@ -56,6 +60,11 @@ export async function eslintPlugin(
5660 audits,
5761 groups,
5862
59- runner : createRunnerConfig ( runnerScriptPath , audits , eslintrc , patterns ) ,
63+ runner : createRunnerConfig (
64+ runnerScriptPath ,
65+ audits ,
66+ eslintrcPath ,
67+ patterns ,
68+ ) ,
6069 } ;
6170}
0 commit comments