@@ -760,6 +760,7 @@ async function analyzeModule({ module, moduleDir, issues, config }) {
760760 : null ;
761761 const declaredDependencyNames = extractDeclaredDependencyNames ( packageSummary ) ;
762762 const usedDependencies = new Set ( ) ;
763+ const dependencyUsage = new Map ( ) ;
763764
764765 const groups = config ?. groups ?? { } ;
765766 const runFastChecks = groups . fast !== false ;
@@ -840,6 +841,10 @@ async function analyzeModule({ module, moduleDir, issues, config }) {
840841 if ( detectedDependencies . size > 0 ) {
841842 for ( const dependencyName of detectedDependencies ) {
842843 usedDependencies . add ( dependencyName ) ;
844+ if ( ! dependencyUsage . has ( dependencyName ) ) {
845+ dependencyUsage . set ( dependencyName , new Set ( ) ) ;
846+ }
847+ dependencyUsage . get ( dependencyName ) . add ( relative ) ;
843848 }
844849 }
845850 }
@@ -998,7 +1003,17 @@ async function analyzeModule({ module, moduleDir, issues, config }) {
9981003 if ( filteredMissingDependencies . length > 0 ) {
9991004 const rule = getRuleById ( MISSING_DEPENDENCY_RULE_ID ) ;
10001005 const dependencyList = filteredMissingDependencies
1001- . map ( ( name ) => `\`${ name } \`` )
1006+ . map ( ( name ) => {
1007+ const files = dependencyUsage . get ( name ) ;
1008+ if ( ! files || files . size === 0 ) {
1009+ return `\`${ name } \`` ;
1010+ }
1011+ const formattedFiles = Array . from ( files )
1012+ . sort ( )
1013+ . map ( ( file ) => `\`${ file } \`` )
1014+ . join ( ", " ) ;
1015+ return `\`${ name } \` (used in ${ formattedFiles } )` ;
1016+ } )
10021017 . join ( ", " ) ;
10031018 const plural = filteredMissingDependencies . length > 1 ;
10041019 const baseMessage = `The module imports ${ dependencyList } but does not list ${ plural ? "them" : "it" } in package.json.` ;
0 commit comments