@@ -12,6 +12,7 @@ import path from "node:path";
1212import { spawnSync } from "node:child_process" ;
1313import { writeFile } from "node:fs/promises" ;
1414import enquirer from "enquirer" ;
15+ import semverSatisfies from "semver/functions/satisfies" ;
1516import { isPackageTypeModule , installSyncSaveDev , fetchPeerDependencies , findPackageJson } from "./utils/npm-utils.js" ;
1617import { getShorthandName } from "./utils/naming.js" ;
1718import * as log from "./utils/logging.js" ;
@@ -119,7 +120,8 @@ export class ConfigGenerator {
119120 const languages = this . answers . languages ?? [ "javascript" ] ;
120121 const purpose = this . answers . purpose ;
121122
122- let importContent = "import { defineConfig } from \"eslint/config\";\n" ;
123+ let isDefineConfigExported = false ;
124+ let importContent = "" ;
123125 let exportContent = "" ;
124126 let needCompatHelper = false ;
125127
@@ -245,6 +247,11 @@ export class ConfigGenerator {
245247
246248 this . result . devDependencies . push ( ...peers ) ;
247249 } else {
250+ const versionMatch = peers [ eslintIndex ] . match ( / e s l i n t @ ( .+ ) / u) ;
251+ const versionRequirement = versionMatch [ 1 ] ; // Complete version requirement string
252+
253+ // Check if the version requirement allows for ESLint 9.22.0+
254+ isDefineConfigExported = semverSatisfies ( "9.22.0" , versionRequirement ) ;
248255
249256 // eslint is in the peer dependencies => overwrite eslint version
250257 this . result . devDependencies [ 0 ] = peers [ eslintIndex ] ;
@@ -263,6 +270,15 @@ export class ConfigGenerator {
263270
264271 exportContent += ` compat.extends("${ shorthandName } "),\n` ;
265272 }
273+ } else {
274+ isDefineConfigExported = true ;
275+ }
276+
277+ if ( isDefineConfigExported ) {
278+ importContent += "import { defineConfig } from \"eslint/config\";\n" ;
279+ } else {
280+ this . result . devDependencies . push ( "@eslint/config-helpers" ) ;
281+ importContent += "import { defineConfig } from \"@eslint/config-helpers\";\n" ;
266282 }
267283
268284 if ( needCompatHelper ) {
0 commit comments