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.swift punya // 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.swift integration.
  • Test pass di swift test.
  • Tag Git dengan format SemVer (1.0.0, bukan v1.0.0 atau 1.0).
  • LICENSE file ada (kalau open source).
  • Asset di Resources/, akses via Bundle.module.

Apa yang Harus Dipelajari Selanjutnya

  1. swift6-package-access-level.md — keyword package untuk shared internal API antar module.
  2. swift6-swift-testing.md — framework testing modern yang paling pas dengan SPM.
  3. swift-macro.md — macro yang harus di-distribute via SPM.
  4. 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.