Flutter π§±Mason Brick μ¬μ©ν΄λ³΄κΈ°
Mason μ΄λ?
Masonμ Brick (λ²½λ) μ΄λΌλ μ¬μ©μ μ μ ν νλ¦ΏμΌλ‘ μ½λλ₯Ό μμ±νλ μ€νμμ€ λꡬ μ λλ€.
κ°λ¨ν λ§ν΄μ νλ‘μ νΈ ν΄λ ꡬ쑰μ νμΌμ λ§λ€κ³ λͺ¨λ νλ‘μ νΈμμ μ μμ μΌλ‘ μ¬μ© ν μ μμ΅λλ€.
Install
# homebrewμμ μ€μΉ
$ brew tap felangel/mason
$ brew install mason
Mason μμνκΈ°
λ¨Όμ Flutter νλ‘μ νΈμ λ£¨νΈ ν΄λμμ mason_bricks λΌλ μ΄λ¦μ ν΄λλ₯Ό λ§λ€κ² μ΅λλ€.
κ·Έλ°λ€μ Android Studio or IntelliJ IDE μμ ν°λ―Έλμ μ€ννμ¬ μλμ λͺ λ Ήμ΄λ₯Ό μ€ννμ¬ Mason νλ‘μ νΈλ₯Ό μ΄κΈ°ν ν©λλ€.
$ mason init
.mason λλ ν 리μ ν¨κ» mason.yaml νμΌμ΄ μμ±λ©λλ€.
mason.yaml μ pubspec.yaml κ³Ό λΉμ·ν©λλ€.
brickμ λν κ²½λ‘λ₯Ό μ§μ ν μ μμ΅λλ€. (λ‘컬 κ²½λ‘ λλGithub μ£Όμ)
μ΄μ 본격μ μΌλ‘ ν νλ¦Ώμ λ§λ€μ΄ λ³΄κ² μ΅λλ€.
- νλ‘μ νΈμ λ£¨νΈ ν΄λμ bricks λΌλ μ ν΄λλ₯Ό λ§λλλ€.
- ν΄λΉ ν΄λμ μ ν νλ¦Ώμ λ§λλλ€.
λͺ λ Ήμ΄λ λ€μκ³Ό κ°μ΅λλ€.
$ mkdir bricks
$ cd bricks
$ mason new {{brick name}} // brick name μ μνλ ν
νλ¦Ώ μ΄λ¦μ λ£μ΄μ£ΌμΈμ
λ€μκ³Ό κ°μ΄ ν΄λμ νμΌμ΄ μμ± λμμ΅λλ€.
ν΄λ λ° νμΌ μ€λͺ
- __brick__ : μ΄ ν΄λμλ brick(λ²½λ)μ λ§λλ λ° νμν ν νλ¦Ώ νμΌκ³Ό ν΄λκ° ν¬ν¨λ©λλ€.
- brick.yaml : μ΄ νμΌμλ brickμ μμ±νλ λ° νμν νμ ν¨ν€μ§ λ° λ³μκ° ν¬ν¨λμ΄ μμ΅λλ€.
- CHANGELOG.md : μ΄ νμΌμ λ³κ²½ μ¬νμ κΈ°λ‘νλ λ° μ¬μ©λ©λλ€.
- LICENSE : μ΄ νμΌμλ λΈλ¦μ λΌμ΄μ μ€ μΈλΆ μ λ³΄κ° ν¬ν¨λμ΄ μμ΅λλ€.
- README.md : μ΄ νμΌμλ λ§ν¬λ€μ΄ νμμ λΈλ‘ λ¬Έμκ° ν¬ν¨λμ΄ μμ΅λλ€.
Template ꡬ쑰
μ°λ¦¬μ κΈ°λ₯ μ΄λ¦μ΄ Catalog λΌλ©΄ ν΄λ ꡬ쑰λ λ€μκ³Ό κ°μ΅λλ€
βββ catalog_page_vm.dart
βββ catalog_screen.dart
βββ entity
β βββ catalog_entity.dart
βββ usecase
β βββ get_catalog_usecase.dart
βββ repository
β βββ catalog_repository.dart
{{name}} μ ν°λ―Έλμμ μ λ ₯ν λ³μ μ λλ€.
κΈ°λ³Έ κ°λ μ μΌλ°μ μΌλ‘ μμ±νλ κ²κ³Ό λμΌν μ½λλ₯Ό μμ±νλ κ²μ λλ€. Masonμ΄ {{variable}} λ₯Ό λ³μλ‘ λ³κ²½ν©λλ€.
{{name}}_screen.dart μ μν μ½λ ꡬ쑰
λ©μ΄μ¨ μ€ν (brick ν΄λμμ μ€ν)
mason get
mason make clean_arch_feature
λ©μ΄μ¨ μ μμΌλ‘ μ¬μ©νκΈ°
mason add --global clean_arch_feature
μ’ λ Mason μ λν΄μ μμ보기 μν΄μλ
https://github.com/felangel/mason/tree/master/packages/mason_cli#readme μ λ¬Έμλ₯Ό μ½μ΄λ³΄μλ©΄ λμμ΄ λ κ² κ°μ΅λλ€.
κ°μ¬ν©λλ€ : )