clarc_arch_cli 0.1.0
clarc_arch_cli: ^0.1.0 copied to clipboard
A CLI for scaffolding Flutter Clean Architecture projects, modules, and pages.
clarc #
clarc adalah CLI untuk mempercepat pembuatan project Flutter dengan pola Clean Architecture. Package ini dipublish sebagai clarc_arch_cli, sementara command yang dijalankan tetap clarc.
Fitur #
- Membuat project Flutter baru dengan struktur Clean Architecture.
- Menambahkan dependency umum: Dio, Flutter Bloc, Get It, Go Router, Equatable, Freezed, JSON Serializable, Shared Preferences, dan Pretty Dio Logger.
- Membuat module feature lengkap dari layer
data,domain, sampaipresentation. - Membuat page baru di module terpilih dan otomatis register route GoRouter.
- Otomatis register dependency module ke Get It.
- Mendukung Flutter runner:
flutterfvm flutterpuro flutter
- Bisa memilih runner lewat wizard interaktif atau flag
--flutter-cmd. - Opsional setup local database dengan
sqflite.
Install #
Setelah package tersedia di pub.dev:
dart pub global activate clarc_arch_cli
Lalu jalankan:
clarc --help
Pastikan folder global pub executables sudah ada di PATH.
Install Lokal #
dart pub get
dart pub global activate --source path .
Setelah aktif, command bisa dipanggil dengan:
clarc --help
Saat development, bisa juga langsung pakai:
dart run clarc_arch_cli:clarc --help
Interactive Wizard #
Cara paling nyaman adalah menjalankan command tanpa argumen lengkap:
clarc create project
CLI akan menanyakan:
Mau buat project apa?
Pakai Flutter runner yang mana?
1. Flutter biasa (default)
2. FVM
3. Puro
4. Auto detect
5. Custom command
Apakah project ini menggunakan database local sqflite?
Untuk module dan page:
clarc create module
clarc create page
CLI juga akan menanyakan nama module/page jika belum diberikan.
Flutter Runner #
Default wizard menaruh Flutter biasa sebagai pilihan pertama. Ini cocok untuk user yang memakai Flutter langsung dari PATH.
Pilihan runner:
Flutter biasamenjalankanflutter ....FVMmenjalankanfvm flutter ....Puromenjalankanpuro flutter ....Auto detectmembaca config manager dari folder project.
Mode Auto detect akan memilih runner seperti ini:
- Jika ada
.fvmrcatau folder.fvm, pakaifvm flutter. - Jika ada
.puro.jsonatau folder.puro, pakaipuro flutter. - Jika tidak ada config manager, pakai
flutter.
Override manual:
clarc create project my_app --flutter-cmd flutter
clarc create project my_app --flutter-cmd "fvm flutter"
clarc create project my_app --flutter-cmd "puro flutter"
Kalau memakai FVM atau Puro, versi Flutter akan mengikuti konfigurasi tool tersebut. clarc tidak mengunci versi Flutter sendiri.
Membuat Project #
clarc create project my_app --org com.example
Jika nama project tidak diberikan, CLI akan menanyakan nama project.
Untuk setup local database sqflite lewat flag:
clarc create project my_app --local-db
clarc create project my_app --no-local-db
Opsi penting:
clarc create project my_app --path ./apps
clarc create project my_app --platforms android,ios,web
clarc create project my_app --skip-flutter-create
clarc create project my_app --no-pub-get
clarc create project my_app --yes
clarc akan meminta approval untuk aksi besar seperti menjalankan flutter create, memakai folder yang sudah berisi file, dan menjalankan pub get.
Membuat Module #
clarc create module auth --project-dir ./my_app
Module yang dibuat:
lib/features/auth/
data/
datasources/
models/
repositories/
domain/
entities/
repositories/
usecases/
presentation/
bloc/
pages/
Selain membuat file, clarc juga:
- Register route default module ke
lib/app/router/app_router.dart. - Register Bloc, UseCase, Repository, dan DataSource ke
lib/core/di/injection.dart. - Menawarkan untuk menjalankan
build_runner.
Contoh dengan FVM:
clarc create module auth --project-dir ./my_app --flutter-cmd "fvm flutter"
Membuat Page #
clarc create page auth login --project-dir ./my_app
Perintah ini membuat:
lib/features/auth/presentation/pages/login_page.dart
Lalu otomatis menambahkan route:
/auth/login
Jika module belum ada, CLI akan menanyakan apakah module perlu dibuat dulu.
Struktur Project Generated #
Project baru akan memiliki struktur dasar:
lib/
app/
app.dart
router/
app_router.dart
core/
di/
injection.dart
error/
failure.dart
database/
app_database.dart
network/
api_client.dart
usecases/
usecase.dart
features/
home/
presentation/
pages/
home_page.dart
main.dart
Folder core/database hanya dibuat jika user memilih local database.
Workflow Rekomendasi #
clarc create project my_app --org com.example
cd my_app
clarc create module auth
clarc create page auth login
Jika memakai FVM:
fvm use 3.24.0
clarc create project my_app --flutter-cmd "fvm flutter"
cd my_app
clarc create module auth --flutter-cmd "fvm flutter"
Development #
dart format bin lib test
dart analyze
dart test