Swift Academy · Pelajaran

Pemberian Versi, Penyelesaian Konflik, dan Plugin Swift

Mengelola rentang versi, menyelesaikan konflik dependensi, dan menggunakan plugin alat build.

Pelajaran 4 dari 412 langkah

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 versions

Menyelesaikan 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.x

Memaksakan 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 list

Pemeriksaan 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.

Gratis untuk memulai

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

  1. Package.swift: Target, Produk, dan Dependensi
  2. Package Lokal dan Modul Fitur
  3. Target Biner dan XCFramework
  4. Pemberian Versi, Penyelesaian Konflik, dan Plugin Swift
← Kembali ke Swift Academy