0Pricing
Swift Academy · Ders

Sürümleme, Çakışmaları Çözme ve Swift Eklentileri

Sürüm aralıklarını yönetin, bağımlılık çakışmalarını çözün ve derleme aracı eklentilerini kullanın.

Sürümleme, Çakışmaları Çözme ve Swift Eklentileri, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Swift Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Swift Academy kursu toplamda 4 dersten oluşur.

SPM'de Semantik Sürümleme

SPM, semver kullanır: MAJOR.MINOR.PATCH. Gereksinimleri from:, exact: veya .upToNextMajor ile tanımlayın.

.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, tüm bağımlılıkların kesin sürümlerini sabitler. Uygulamalar için bu dosyayı depoya kaydedin; kitaplıklar için eklemeyin.

// Package.resolved (auto-generated):
// Pins exact commit hash and version for every dependency
// Run "swift package update" to update pinned versions

Sürüm Çakışmalarını Çözümleme

İki paket aynı bağımlılığın farklı sürümlerini gerektirdiğinde SPM uyumlu bir sürüm bulmaya çalışır. Çözülemeyen çakışmalar bir derleme hatasına yol açar.

// 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

Bir Sürümü Zorunlu Kılma

SPM'nin normalde seçeceği sürümü geçersiz kılmak için çakışan bağımlılığı doğrudan uygulamanızın Package.swift dosyasına ekleyin.

// Force Logging 1.5.0 by declaring it directly:
.package(url: "https://github.com/apple/swift-log", exact: "1.5.0")

Derleme Aracı Eklentileri

Derleme aracı eklentileri, kaynak kodu oluşturmak, kaynakları işlemek veya lint araçlarını otomatik olarak çalıştırmak için derleme sırasında çalışır.

// In Package.swift:
.plugin(
  name: "SourceGenerator",
  capability: .buildTool()
)

Derleme Aracı Eklentisi Uygulama

Bir derleme aracı eklentisi BuildToolPlugin protokolüne uyar ve BuildCommands veya PrebuildCommands döndürür.

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]
    )]
  }
}

Komut Eklentileri

Komut eklentileri Xcode'dan veya CLI üzerinden isteğe bağlı olarak çalışır; biçimlendirme, lint denetimi veya belge oluşturma için kullanışlıdır.

// In Package.swift:
.plugin(
  name: "FormatPlugin",
  capability: .command(intent: .sourceCodeFormatting())
)

Komut Eklentisi Çalıştırma

Komut eklentilerini terminalden veya Xcode'daki sağ tıklama menüsünden çalıştırın.

// CLI:
swift package plugin format-source-code
// Xcode: right-click target → "Format Source Code"

SwiftLint'i Derleme Eklentisi Olarak Kullanma

SwiftLint, her derlemede otomatik olarak çalışan bir SPM eklentisi olarak sunulur.

.package(url: "https://github.com/realm/SwiftLint", from: "0.54.0"),
// In target:
.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLint")

Eklenti Korumalı Alanı

Eklentiler, güvenlik amacıyla sınırlı dosya sistemi erişimine sahip bir korumalı alanda çalışır. Yalnızca kendilerine ayrılan çalışma dizinine yazabilirler.

// Accessible from plugins:
// context.pluginWorkDirectory — writable work dir
// context.package.directory — read-only source
// target.sourceFiles — source file list

Kısa Kontrol

Bir Swift paketinde Package.resolved dosyasının amacı nedir?

Ders Özeti

Package.swift dosyasında semver aralıklarını kullanın. Tekrarlanabilir derlemeler için uygulamalarda Package.resolved dosyasını depoya kaydedin. Sürüm çakışmalarını bağımlılığı doğrudan tanımlayarak çözün. Derleme aracı eklentileri derleme sırasında otomatik olarak çalışır (lint araçları ve kod oluşturucular). Komut eklentileri isteğe bağlı olarak çalışır. Eklentiler güvenlik amacıyla korumalı alanda çalışır.

Sıkça Sorulan Sorular

“Sürümleme, Çakışmaları Çözme ve Swift Eklentileri” dersi ücretsiz mi?

Evet — “Sürümleme, Çakışmaları Çözme ve Swift Eklentileri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Swift Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Swift Academy kursu toplamda 4 dersten oluşur.

“Sürümleme, Çakışmaları Çözme ve Swift Eklentileri” dersinde ne öğreneceğim?

Sürüm aralıklarını yönetin, bağımlılık çakışmalarını çözün ve derleme aracı eklentilerini kullanın. Swift Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Swift Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Swift Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“Sürümleme, Çakışmaları Çözme ve Swift Eklentileri” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Swift Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Swift Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Package.swift: Hedefler, Ürünler ve Bağımlılıklar
  2. Yerel Paketler ve Özellik Modülleri
  3. İkili Hedefler ve XCFramework'ler
  4. Sürümleme, Çakışmaları Çözme ve Swift Eklentileri
← Swift Academy Sayfasına Dön