@@ -20,13 +20,31 @@ import {
2020} from 'eslint-config-airbnb-extended' ;
2121import { rules as prettierConfigRules } from 'eslint-config-prettier' ;
2222
23- import { dirname } from 'node:path' ;
23+ import { readFileSync } from 'node:fs' ;
24+ import { dirname , resolve } from 'node:path' ;
2425import { fileURLToPath } from 'node:url' ;
2526import { FlatCompat } from '@eslint/eslintrc' ;
27+ import { globSync } from 'glob' ;
2628
2729const __filename = fileURLToPath ( import . meta. url ) ;
2830const __dirname = dirname ( __filename ) ;
2931
32+ const rootPackageJson = JSON . parse (
33+ readFileSync ( new URL ( './package.json' , import . meta. url ) , 'utf8' ) ,
34+ ) ;
35+ const workspacePatterns = rootPackageJson . workspaces ?? [ ] ;
36+ const workspacePackageDirs = workspacePatterns . flatMap ( ( pattern ) =>
37+ globSync ( `${ pattern } /package.json` , {
38+ cwd : __dirname ,
39+ ignore : [ '**/node_modules/**' ] ,
40+ } ) . map ( ( packageJsonPath ) =>
41+ resolve ( __dirname , packageJsonPath . replace ( / \/ p a c k a g e \. j s o n $ / , '' ) ) ,
42+ ) ,
43+ ) ;
44+ const monorepoPackageDirs = Array . from (
45+ new Set ( [ __dirname , ...workspacePackageDirs ] ) ,
46+ ) ;
47+
3048const compat = new FlatCompat ( {
3149 baseDirectory : __dirname ,
3250} ) ;
@@ -171,7 +189,7 @@ export default defineConfig([
171189 rules : {
172190 'import-x/no-extraneous-dependencies' : [
173191 2 ,
174- { devDependencies : true } ,
192+ { devDependencies : true , packageDir : monorepoPackageDirs } ,
175193 ] ,
176194 } ,
177195 } ,
@@ -188,7 +206,7 @@ export default defineConfig([
188206 rules : {
189207 'import-x/no-extraneous-dependencies' : [
190208 'error' ,
191- { devDependencies : true } ,
209+ { devDependencies : true , packageDir : monorepoPackageDirs } ,
192210 ] ,
193211 } ,
194212 } ,
0 commit comments