flutter_clean_arch_scaffold 0.1.2
flutter_clean_arch_scaffold: ^0.1.2 copied to clipboard
Flutter Clean Architecture 스캐폴딩 CLI. `flutter_clean_arch init`으로 domain/data/presentation/design 멀티 패키지 구조를 복제하고, `add feature`로 entity·dto·mapper·usecase 파일을 생성합니다.
flutter_clean_arch_scaffold #
Flutter Clean Architecture 구조를 기존 Flutter 프로젝트에 복제하는 CLI입니다.
flutter create로 만든 프로젝트에 packages/domain, data, presentation, design과 melos.yaml을 추가합니다.
android/, ios/ 설정은 건드리지 않습니다.
사용 방법 #
아래를 위에서부터 순서대로 실행하세요.
# 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 구조 복제
flutter_clean_arch init
# lib/main.dart 수정 — init이 기존 main.dart를 유지한 경우 필수
# import 'di.dart'; 추가 후 main() 맨 앞에 configureDependencies(); 호출
# feature 추가
flutter_clean_arch add feature payment --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가 템플릿으로 교체되어 위 코드가 포함됩니다.
생성되는 구조 #
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
링크 #
- GitHub 저장소
- pub.dev
- 배포 가이드