Mason
Mason adalah sebuah tool berbasis Dart CLI yang berfungsi untuk mempercepat pengembangan aplikasi dengan konsep code generator berbasis brick. Ibaratnya seperti "template engine" untuk kode, Mason memungkinkan kita membuat potongan kode yang berulang (misalnya struktur folder, class BLoC, widget, atau modul fitur) lalu membangunnya kembali di proyek dengan satu perintah. Dengan Mason, tim bisa menjaga konsistensi arsitektur antar-proyek, mengurangi kesalahan penulisan kode boilerplate, serta mempercepat produktivitas karena developer tidak perlu lagi menulis ulang struktur dasar berulang kali.
Install masonβ
Saya pakai fvm untuk bisa menjalankan dart
saya perlu memilih salah satu versi flutter yang ada di C:\Users\<username>\fvm\versions\<versi>\bin
untuk di masukan ke path Windows Environment, nanti saya bisa menjalankan perintah di bawah:
dart pub global activate mason_cli
Karena saya pakai FVM saya coba perintah di bawah ini bisa akan tetapi saya tidak bisa memanggil mason
, jika menemukan solusi lain nanti saya catat disini:
fvm dart pub global activate mason_cli
Saya bisa menjalakan mason dengan fvm dengan perintah berikut:
fvm dart pub global run mason_cli:mason
Untuk mempersingkat saya buatkan git alias di ~\.bashrc
alias fmason="fvm dart pub global run mason_cli:mason"
π Catatan: Jika Anda pengguna Windows tidak bisa menjalankan
mason --version
lewatgit bash
saya sarankan pakaipowershell
Initial Masonβ
Perintah ini digunakan untuk initial mason nanti otomatis generate mason.yaml
yang berisi daftar bricks mason yang digunakan.
mason init
Menambahkan Brickβ
mason add remote_datasource --git-url https://github.com/lyrihkaesa/bricks_flutter_starter_kit.git --git-path bricks/remote_datasource
mason add remote_datasource --path=bricks/remote_datasource
Menggunakan Masonβ
mason make remote_datasource
Mengecek daftar Brickβ
mason list
Membuat Brickβ
mason new <brick_name> --output-dir bricks
mason new remote_datasource --output-dir bricks
analysis_options.yaml
β
Agar tidak kena warning error:
# include: package:flutter_lints/flutter.yaml
linter:
rules:
analyzer:
exclude:
- bricks/**/*
errors:
invalid_annotation_target: ignore