Section 18/182 menit
18. Ringkasan & Decision Guide
18. Ringkasan & Decision Guide
Tabel Decision Guide
| Skenario | Rekomendasi |
|---|---|
| Perlu generate Swift code dari schema/template | Build Tool Plugin |
| Perlu standarisasi operasi dev (format, lint) | Command Plugin |
| Distribusi library tanpa expose source code | Binary Target + XCFramework |
| Library yang aktif dikembangkan bersama tim | Source package + local path |
| Tim besar dengan banyak feature teams | Monorepo + local packages + workspace |
| Butuh governance package internal perusahaan | Self-hosted Swift Package Registry |
| Binary target milik sendiri, build via CI | GitHub Actions + automated checksum |
| Library butuh conditional features per platform | condition: .when(platforms:) |
| Butuh compile-time flags per environment | swiftSettings: [.define(...)] |
| Butuh link system framework conditionally | linkerSettings: [.linkedFramework(..., .when)] |
| Resource yang butuh path exact saat runtime | .copy() bukan .process() |
| Resource yang butuh dioptimasi saat build | .process() (default untuk xcassets, plist) |
Checklist Sebelum Publish Package
swift
[ ] Package.swift memiliki swift-tools-version yang tepat
[ ] Semua platform minimum version sudah dideklarasikan
[ ] defaultLocalization diset jika ada .lproj folder
[ ] Package.resolved di-commit ke repository
[ ] Tidak ada unsafeFlags di target yang di-export sebagai library
[ ] Binary target memiliki checksum yang valid dan up-to-date
[ ] README menjelaskan cara install dan penggunaan dasar
[ ] Test target ada dan berjalan di CI
[ ] Tidak ada circular dependencies
[ ] Private implementation details ada di internal target (bukan langsung di public target)
Penutup
Swift Package Manager telah berkembang jauh dari sekadar dependency manager menjadi ekosistem build tooling yang lengkap. Build Tool Plugin menghilangkan friction code generation manual. Command Plugin menstandardisasi alur kerja tim. Binary Target membuka distribusi library professional.
Untuk proyek skala tim, pola yang terbukti bekerja adalah: monorepo dengan local packages untuk development cepat + workspace Xcode untuk multi-package editing + CI caching via Package.resolved hash untuk build yang reproducible dan cepat.
Langkah berikutnya: pelajari swift-concurrency-deep-dive.md untuk memahami cara menggunakan async/await di dalam plugin dan package code, serta xcode-cloud-guide.md untuk integrasi CI native Apple.