Flutter 🧱Mason Brick μ‚¬μš©ν•΄λ³΄κΈ°

Andrew Lee
andrewlee1228
Published in
4 min readAug 16, 2022

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 μ£Όμ†Œ)

mason.yaml 파일

이제 본격적으둜 ν…œν”Œλ¦Ώμ„ λ§Œλ“€μ–΄ λ³΄κ² μŠ΅λ‹ˆλ‹€.

  1. ν”„λ‘œμ νŠΈμ˜ 루트 폴더에 bricks λΌλŠ” μƒˆ 폴더λ₯Ό λ§Œλ“­λ‹ˆλ‹€.
  2. ν•΄λ‹Ή 폴더에 μƒˆ ν…œν”Œλ¦Ώμ„ λ§Œλ“­λ‹ˆλ‹€.

λͺ…λ Ήμ–΄λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

$ mkdir bricks
$ cd bricks
$ mason new {{brick name}} // brick name 에 μ›ν•˜λŠ” ν…œν”Œλ¦Ώ 이름을 λ„£μ–΄μ£Όμ„Έμš”

λ‹€μŒκ³Ό 같이 폴더와 파일이 생성 λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

폴더 및 파일 μ„€λͺ…

  1. __brick__ : 이 ν΄λ”μ—λŠ” brick(벽돌)을 λ§Œλ“œλŠ” 데 ν•„μš”ν•œ ν…œν”Œλ¦Ώ 파일과 폴더가 ν¬ν•¨λ©λ‹ˆλ‹€.
  2. brick.yaml : 이 νŒŒμΌμ—λŠ” brick을 μƒμ„±ν•˜λŠ” 데 ν•„μš”ν•œ ν•„μˆ˜ νŒ¨ν‚€μ§€ 및 λ³€μˆ˜κ°€ ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.
  3. CHANGELOG.md : 이 νŒŒμΌμ€ λ³€κ²½ 사항을 κΈ°λ‘ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.
  4. LICENSE : 이 νŒŒμΌμ—λŠ” 브릭의 λΌμ΄μ„ μŠ€ μ„ΈλΆ€ 정보가 ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.
  5. 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 의 λ¬Έμ„œλ₯Ό μ½μ–΄λ³΄μ‹œλ©΄ 도움이 될 것 κ°™μŠ΅λ‹ˆλ‹€.

κ°μ‚¬ν•©λ‹ˆλ‹€ : )

--

--