Section 17/172 menit
17. Ringkasan & Decision Guide
17. Ringkasan & Decision Guide
Decision Tree: SPM vs Alternatif
| Pertanyaan | → |
|---|---|
| Project baru iOS/macOS? | SPM |
| Library yang akan dipakai banyak orang? | SPM (jangkauan terluas) |
| Server-side Swift / Linux? | SPM (satu-satunya official option) |
| Project existing dengan banyak pod, mostly support SPM? | Migrasi bertahap |
| Project existing dengan pod kritis yang belum support SPM? | Hybrid: SPM + CocoaPods sementara |
| Library kamu butuh build script super kompleks? | xcodebuild / CMake |
Decision Tree: Static vs Dynamic Library
| Kondisi | Rekomendasi |
|---|---|
| Library kecil, dipakai satu target | .automatic (biasanya static) |
| Library besar dipakai banyak app extension | .dynamic |
| Library plug-and-play (analytics, crash reporting) | .dynamic |
| Library performance critical | .static |
Decision Tree: Versioning
| Konteks | Strategi |
|---|---|
| Library publik kamu | Semantic versioning ketat, breaking change = MAJOR bump |
| Konsumen library | from: untuk stabil, ..< untuk yang sering breaking |
| Internal monorepo | branch: atau path: (lokal) |
Checklist Sebelum Publish Library
-
Package.swiftpunya// swift-tools-version:di baris 1. -
platforms:di-declare untuk semua platform yang di-support. -
products:library di-declare (kalau tidak, tidak bisa di-depend dari luar). - README dengan instruksi
Package.swiftintegration. - Test pass di
swift test. - Tag Git dengan format SemVer (
1.0.0, bukanv1.0.0atau1.0). -
LICENSEfile ada (kalau open source). - Asset di
Resources/, akses viaBundle.module.
Apa yang Harus Dipelajari Selanjutnya
swift6-package-access-level.md— keywordpackageuntuk shared internal API antar module.swift6-swift-testing.md— framework testing modern yang paling pas dengan SPM.swift-macro.md— macro yang harus di-distribute via SPM.swift6-conditional-compilation.md— strategi compile target multiple Swift version dengan SPM.
Penutup
Swift Package Manager bukan sekadar dependency manager — ia adalah build system yang mengubah cara kita struktur project Apple-platform. Untuk project baru, mulai dengan SPM tanpa ragu. Untuk project existing, evaluasi pod satu per satu dan migrasi bertahap. Untuk app besar, manfaatkan local package untuk modularisasi yang clean — ini terbukti mengurangi build time dan memungkinkan parallel team development.
Yang paling sering ter-skip oleh pemula: package access level + local module = pattern modular paling powerful di Swift saat ini. Pelajari ini setelah dasar SPM kamu solid, dan refactor app jadi modular sebelum codebase membengkak.