@@ -520,10 +520,19 @@ async function collectMigrationPlan(
520520 }
521521
522522 // 11. Framework shim detection + prompt
523- const detectedFrameworks = detectFramework ( rootDir ) ;
523+ // Collect unique frameworks from root and all workspace packages
524+ const allDetectedFrameworks = new Set < Framework > ( detectFramework ( rootDir ) ) ;
525+ for ( const pkg of packages ?? [ ] ) {
526+ for ( const framework of detectFramework ( path . join ( rootDir , pkg . path ) ) ) {
527+ allDetectedFrameworks . add ( framework ) ;
528+ }
529+ }
524530 const frameworkShimFrameworks : Framework [ ] = [ ] ;
525- for ( const framework of detectedFrameworks ) {
526- if ( ! hasFrameworkShim ( rootDir , framework ) ) {
531+ for ( const framework of allDetectedFrameworks ) {
532+ const anyMissingShim =
533+ ! hasFrameworkShim ( rootDir , framework ) ||
534+ ( packages ?? [ ] ) . some ( ( pkg ) => ! hasFrameworkShim ( path . join ( rootDir , pkg . path ) , framework ) ) ;
535+ if ( anyMissingShim ) {
527536 const addShim = await confirmFrameworkShim ( framework , options . interactive ) ;
528537 if ( addShim ) {
529538 frameworkShimFrameworks . push ( framework ) ;
@@ -854,7 +863,15 @@ async function executeMigrationPlan(
854863 if ( plan . frameworkShimFrameworks ) {
855864 updateMigrationProgress ( 'Adding TypeScript shim' ) ;
856865 for ( const framework of plan . frameworkShimFrameworks ) {
857- addFrameworkShim ( workspaceInfo . rootDir , framework , report ) ;
866+ if ( ! hasFrameworkShim ( workspaceInfo . rootDir , framework ) ) {
867+ addFrameworkShim ( workspaceInfo . rootDir , framework , report ) ;
868+ }
869+ for ( const pkg of workspaceInfo . packages ) {
870+ const pkgPath = path . join ( workspaceInfo . rootDir , pkg . path ) ;
871+ if ( detectFramework ( pkgPath ) . includes ( framework ) && ! hasFrameworkShim ( pkgPath , framework ) ) {
872+ addFrameworkShim ( pkgPath , framework , report ) ;
873+ }
874+ }
858875 }
859876 }
860877
0 commit comments