A guide for module renaming and refactoring.
Module Renaming Procedure#
1. Directory Move#
# Example: scm_sales_management â publisher_sales_management
mv feature/console/scm_sales_management feature/console/publisher_sales_management
2. Update pubspec.yaml#
# feature/console/publisher_sales_management/pubspec.yaml
name: publisher_sales_management # Change package name
3. File Renaming#
| Before | After |
|---|---|
scm_sales_management.dart | publisher_sales_management.dart |
scm_sales_management_bloc.dart |
publisher_sales_management_bloc.dart |
scm_sales_management_page.dart |
publisher_sales_management_page.dart |
scm_sales_management_route.dart |
publisher_sales_management_route.dart |
i_scm_sales_management_repository.dart |
i_publisher_sales_management_repository.dart |
4. Class/Type Renaming#
// Before
class ScmSalesManagementBloc extends Bloc<...>
class ScmSalesManagementState
sealed class ScmSalesManagementEvent
class IScmSalesManagementRepository
// After
class PublisherSalesManagementBloc extends Bloc<...>
class PublisherSalesManagementState
sealed class PublisherSalesManagementEvent
class IPublisherSalesManagementRepository
5. Update Import Paths#
// Before
import 'package:scm_sales_management/scm_sales_management.dart';
// After
import 'package:publisher_sales_management/publisher_sales_management.dart';
6. Update Router#
// console_router/lib/src/route/console_route.dart
import 'package:publisher_sales_management/publisher_sales_management.dart';
// Update route definitions as well
TypedGoRoute<PublisherSalesManagementRoute>(
path: '/publisher-sales',
// ...
)
7. Melos Bootstrap#
melos bootstrap
Renaming Checklist#
- Move directory
- Change pubspec.yaml name
- Rename main export file
- Rename BLoC files (bloc, event, state)
- Rename Page files
- Rename Route files
- Rename Repository interface/implementation
- Update UseCase internal references
- Rename Failure/Exception classes
- Update all import paths
- Update Router package dependencies
- Verify BlocProvider wiring (no di/ folder)
- Update test files
- Run melos bootstrap
- Verify build
Batch Replacement Patterns#
VSCode Search/Replace#
Search: scm_sales_management
Replace: publisher_sales_management
Search: ScmSalesManagement
Replace: PublisherSalesManagement
Search: scmSalesManagement
Replace: publisherSalesManagement
sed commands (caution: backup required)#
# Replace file contents
find feature/console/publisher_sales_management -name " *.dart " \
-exec sed -i ' ' ' s/ScmSalesManagement/PublisherSalesManagement/g ' {} \;
find feature/console/publisher_sales_management -name " *.dart " \
-exec sed -i ' ' ' s/scm_sales_management/publisher_sales_management/g ' {} \;
Dependency Graph Impact#
Packages affected by module renaming:
publisher_sales_management
âââ console_router (direct dependency)
âââ app_kobic_console (indirect dependency)
âââ (other packages referencing this module)
Common Mistakes#
- Missing export file: Export paths in main export file not updated
- Router dependency: Dependency name not changed in console_router pubspec.yaml
- BlocProvider: BLoC creation code in page not updated
- Test files: Imports in test files not updated
-
Generated files:
.g.dart,.freezed.dartfiles need regeneration
Verification Commands#
# Build verification
cd feature/console/publisher_sales_management
flutter analyze lib
# Full project verification
melos run analyze --no-select