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.