flutter_clean_arch_scaffold
Flutter Clean Architecture 구조를 기존 Flutter 프로젝트에 복제하는 CLI입니다.
flutter_clean_arch init 한 번으로:
packages/domain,data,presentation,design과melos.yaml생성payment예시 feature 자동 생성 (entity · dto · mapper · datasource · usecase · provider · page)android/,ios/설정은 건드리지 않음
새 feature는 payment 폴더 구조를 보고 add feature로 추가합니다.
사용 방법
아래를 위에서부터 순서대로 실행하세요.
# CLI 설치 (최초 1회)
dart pub global activate flutter_clean_arch_scaffold
# PATH 설정 (~/.pub-cache/bin)
export PATH="$PATH:$HOME/.pub-cache/bin"
# 새 Flutter 프로젝트
flutter create my_app
cd my_app
# Clean Architecture 구조 복제 + payment 예시 feature
flutter_clean_arch init
# lib/main.dart 수정 — init이 기존 main.dart를 유지한 경우 필수
# import 'di.dart'; 추가 후 main() 맨 앞에 configureDependencies(); 호출
# 새 feature 추가 (payment 예시를 참고)
flutter_clean_arch add feature order --with-ui
# 의존성 설치 + 코드 생성
dart pub global activate melos
melos bootstrap
melos run build:all
# 앱 실행
flutter run
lib/main.dart 수정 (중요)
flutter create 직후 init을 실행하면 기존 lib/main.dart는 유지됩니다.
DI가 동작하려면 아래를 직접 추가해야 합니다.
import 'di.dart';
void main() {
configureDependencies(); // ← runApp()보다 먼저 호출
runApp(const MainApp());
}
init --force를 쓰면 main.dart가 템플릿으로 교체되어 위 코드와 PaymentPage 홈 화면이 포함됩니다.
init은 payment 예시 feature도 함께 생성합니다 (domain / data / presentation 전 레이어).
생성되는 구조
my_app/
├── android/ # flutter create 결과 (그대로)
├── ios/
├── lib/
│ ├── main.dart
│ └── di.dart # init이 생성
├── packages/
│ ├── domain/ # entity, repository, usecase
│ ├── data/ # datasource, dto, mapper, repository impl
│ ├── presentation/ # provider, page
│ └── design/ # 디자인 시스템, assets
└── melos.yaml
레이어 의존
presentation → domain
data → domain
design → (독립)
feature 폴더 예시 (add feature payment --with-ui)
packages/domain/lib/domain/payment/
entity/ repository/ usecase/
packages/data/lib/data/payment/
datasource/ dto/ mapper/ repository/
packages/presentation/lib/payment/
provider/ page/
data 레이어 흐름
API (JSON) → datasource (compute) → dto → mapper → entity → usecase → UI
명령어
| 명령 | 설명 |
|---|---|
flutter_clean_arch init |
Clean Architecture 구조 복제 |
flutter_clean_arch add feature <name> |
feature 스캐폴딩 |
flutter_clean_arch add feature <name> --with-ui |
presentation 포함 |
flutter_clean_arch add feature <name> --with-local |
local datasource 포함 |
flutter_clean_arch add feature <name> --methods a,b |
메서드 stub 지정 |
flutter_clean_arch init --force |
기존 파일 덮어쓰기 |
flutter_clean_arch init --skip-build |
build_runner 생략 |
feature 이름: snake_case (예: payment, user_profile)
문제 해결
command not found: flutter_clean_arch
export PATH="$PATH:$HOME/.pub-cache/bin"
영구 적용: ~/.zshrc에 위 줄 추가 후 source ~/.zshrc
templates 오류 / 이상한 동작 / 옛 버전이 실행됨
CLI 캐시를 지우고 재설치하세요.
dart pub global deactivate flutter_clean_arch_scaffold
dart pub global activate flutter_clean_arch_scaffold
PATH 없이 실행
dart pub global run flutter_clean_arch_scaffold:flutter_clean_arch init
pub.dev 문서 안내
| 위치 | 파일 | 내용 |
|---|---|---|
| 패키지 카드 짧은 설명 | pubspec.yaml → description |
검색 결과에 보이는 한 줄 요약 |
| 패키지 상세 페이지 | tools/cli/README.md (이 파일) |
설치법, 구조, 명령어 전체 |
README를 수정한 뒤 pub.dev에 반영하려면 버전을 올리고 재배포합니다.
cd tools/cli
# pubspec.yaml version bump + CHANGELOG
dart pub publish