Pemberian Versi, Penyelesaian Konflik, dan Plugin Swift
Mengelola rentang versi, menyelesaikan konflik dependensi, dan menggunakan plugin alat build.
Pemberian Versi, Penyelesaian Konflik, dan Plugin Swift adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Swift Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Swift Academy mencakup 4 pelajaran total.
Pemberian Versi Semantik dalam SPM
SPM menggunakan semver: MAJOR.MINOR.PATCH. Deklarasikan persyaratan dengan from:, exact:, atau .upToNextMajor.
.package(url: "https://github.com/apple/swift-log", from: "1.5.0"),
.package(url: "https://github.com/vapor/vapor", exact: "4.83.0"),
.package(url: "https://github.com/pointfreeco/swift-composable-architecture",
.upToNextMajor(from: "1.0.0"))Package.resolved
Package.resolved menetapkan versi tepat untuk semua dependensi. Simpan berkas ini untuk app, tetapi jangan sertakan untuk pustaka.
// Package.resolved (auto-generated):
// Pins exact commit hash and version for every dependency
// Run "swift package update" to update pinned versionsMenyelesaikan Konflik Versi
Saat dua paket memerlukan versi berbeda dari dependensi yang sama, SPM berusaha menemukan versi yang kompatibel. Konflik yang tidak dapat diselesaikan menyebabkan kesalahan build.
// PackageA requires Logging 1.4.0
// PackageB requires Logging 1.5.0
// SPM resolves to 1.5.0 (satisfies both >= 1.x)
// Conflict: PackageA requires Logging 1.x, PackageB requires 2.xMemaksakan Versi
Tambahkan dependensi yang berkonflik secara langsung ke Package.swift milik app Anda untuk mengganti versi yang seharusnya dipilih SPM.
// Force Logging 1.5.0 by declaring it directly:
.package(url: "https://github.com/apple/swift-log", exact: "1.5.0")Plugin Alat Build
Plugin alat build berjalan selama proses build untuk membuat kode sumber, memproses sumber daya, atau menjalankan pemeriksa kode secara otomatis.
// In Package.swift:
.plugin(
name: "SourceGenerator",
capability: .buildTool()
)Mengimplementasikan Plugin Alat Build
Plugin alat build mematuhi BuildToolPlugin dan mengembalikan BuildCommand atau PrebuildCommand.
import PackagePlugin
@main
struct SourceGenerator: BuildToolPlugin {
func createBuildCommands(context: PluginContext, target: Target) async throws -> [Command] {
let output = context.pluginWorkDirectory.appending("Generated.swift")
return [.buildCommand(
displayName: "Generating sources",
executable: try context.tool(named: "gen-tool").path,
arguments: ["--output", output],
outputFiles: [output]
)]
}
}Plugin Perintah
Plugin perintah berjalan sesuai permintaan dari Xcode atau CLI, dan berguna untuk memformat kode, memeriksa kode, atau membuat dokumentasi.
// In Package.swift:
.plugin(
name: "FormatPlugin",
capability: .command(intent: .sourceCodeFormatting())
)Menjalankan Plugin Perintah
Jalankan plugin perintah dari terminal atau menu klik kanan Xcode.
// CLI:
swift package plugin format-source-code
// Xcode: right-click target → "Format Source Code"Menggunakan SwiftLint sebagai Plugin Build
SwiftLint disertakan sebagai plugin SPM yang berjalan secara otomatis pada setiap proses build.
.package(url: "https://github.com/realm/SwiftLint", from: "0.54.0"),
// In target:
.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLint")Kotak Pasir Plugin
Plugin berjalan dalam lingkungan terisolasi dengan akses sistem berkas yang terbatas demi keamanan. Plugin hanya dapat menulis ke direktori kerja yang ditetapkan untuknya.
// Accessible from plugins:
// context.pluginWorkDirectory — writable work dir
// context.package.directory — read-only source
// target.sourceFiles — source file listPemeriksaan Singkat
Apa tujuan Package.resolved dalam paket Swift?
Ringkasan Pelajaran
Gunakan rentang semver dalam Package.swift. Simpan Package.resolved untuk app agar build dapat direproduksi. Selesaikan konflik versi dengan mendeklarasikan dependensi secara langsung. Plugin alat build berjalan otomatis selama proses build (pemeriksa kode, pembuat kode). Plugin perintah berjalan sesuai permintaan. Plugin diisolasi dalam kotak pasir demi keamanan.
Belajar Swift dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 122
- Pelajaran
- 409
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Pemberian Versi, Penyelesaian Konflik, dan Plugin Swift” gratis?
Ya — teks lengkap “Pemberian Versi, Penyelesaian Konflik, dan Plugin Swift” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Swift Academy, upgrade ke CoddyKit PRO. Kursus Swift Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Pemberian Versi, Penyelesaian Konflik, dan Plugin Swift”?
Mengelola rentang versi, menyelesaikan konflik dependensi, dan menggunakan plugin alat build. Kamu berlatih Swift Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Swift Academy?
Tidak diperlukan pengalaman sebelumnya. Swift Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Pemberian Versi, Penyelesaian Konflik, dan Plugin Swift” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Swift Academy ini?
Ya. Setiap pelajaran Swift Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Package.swift: Target, Produk, dan Dependensi
- Package Lokal dan Modul Fitur
- Target Biner dan XCFramework
- Pemberian Versi, Penyelesaian Konflik, dan Plugin Swift