Swift Academy · Oppitunti

Versiointi, ristiriitojen ratkaiseminen ja Swift-laajennukset

Versioalueiden hallinta, riippuvuusristiriitojen ratkaiseminen ja build tool -laajennusten käyttäminen.

Oppitunti 4/412 vaihetta

Versiointi, ristiriitojen ratkaiseminen ja Swift-laajennukset on ilmainen Swift Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Swift Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Swift Academy-kurssilla on yhteensä 4 oppituntia.

Semanttinen versiointi SPM:ssä

SPM käyttää semanttista versiointia: MAJOR.MINOR.PATCH. Ilmoittakaa vaatimukset käyttämällä from:-, exact:- tai .upToNextMajor-määritystä.

.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 lukitsee kaikkien riippuvuuksien täsmälliset versiot. Sitokaa se sovellusten versionhallintaan, mutta jättäkää se kirjastoista pois.

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

Versioristiriitojen ratkaiseminen

Kun kaksi pakettia edellyttää saman riippuvuuden eri versioita, SPM yrittää löytää yhteensopivan version. Ratkaisemattomat ristiriidat aiheuttavat koontivirheen.

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

Version pakottaminen

Lisätkää ristiriitainen riippuvuus suoraan sovelluksen Package.swift-tiedostoon ohittaaksenne version, jonka SPM muuten valitsisi.

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

Koontityökaluliitännäiset

Koontityökaluliitännäiset suoritetaan koonnin aikana lähdekoodin luomista, resurssien käsittelyä tai lin­tereiden automaattista suorittamista varten.

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

Koontityökaluliitännäisen toteuttaminen

Koontityökaluliitännäinen noudattaa BuildToolPlugin-protokollaa ja palauttaa BuildCommand- tai PrebuildCommand-komentoja.

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

Komentoliitännäiset

Komentoliitännäiset suoritetaan pyynnöstä Xcodesta tai komentoriviltä. Ne sopivat esimerkiksi muotoiluun, lintaukseen ja dokumentaation luomiseen.

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

Komentoliitännäisen suorittaminen

Suorittakaa komentoliitännäisiä päätelaitteesta tai Xcoden hiiren kakkospainikkeen valikosta.

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

SwiftLintin käyttäminen koontiliitännäisenä

SwiftLint toimitetaan SPM-liitännäisenä, joka suoritetaan automaattisesti jokaisen koonnin yhteydessä.

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

Liitännäisten hiekkalaatikko

Liitännäiset suoritetaan turvallisuussyistä hiekkalaatikossa, jossa tiedostojärjestelmän käyttöä on rajoitettu. Ne voivat kirjoittaa vain niille määritettyyn työhakemistoon.

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

Pikatarkistus

Mikä on Package.resolved-tiedoston tarkoitus Swift-paketissa?

Oppitunnin yhteenveto

Käyttäkää Package.swift-tiedostossa semanttisia versiovälejä. Sitokaa Package.resolved sovellusten versionhallintaan toistettavien koontien varmistamiseksi. Ratkaiskaa versioristiriidat ilmoittamalla riippuvuus suoraan. Koontityökaluliitännäiset suoritetaan automaattisesti koonnin aikana, esimerkiksi lintaukseen ja koodin luomiseen. Komentoliitännäiset suoritetaan pyynnöstä. Liitännäiset toimivat turvallisuussyistä hiekkalaatikossa.

Aloita maksutta

Opi Swift tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
122
Oppitunnit
409

Usein kysytyt kysymykset

Onko oppitunti ”Versiointi, ristiriitojen ratkaiseminen ja Swift-laajennukset” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Swift Academy-oppimispolun 3 oppituntia, myös oppitunnin “Versiointi, ristiriitojen ratkaiseminen ja Swift-laajennukset”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Swift Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Versiointi, ristiriitojen ratkaiseminen ja Swift-laajennukset”?

Versioalueiden hallinta, riippuvuusristiriitojen ratkaiseminen ja build tool -laajennusten käyttäminen. Harjoittelet Swift Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Swift Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Swift Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.

Kuinka kauan ”Versiointi, ristiriitojen ratkaiseminen ja Swift-laajennukset”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Swift Academy-oppitunnilla?

Kyllä. Jokainen Swift Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Package.swift: kohteet, tuotteet ja riippuvuudet
  2. Paikalliset paketit ja ominaisuusmoduulit
  3. Binaarikohteet ja XCFrameworkit
  4. Versiointi, ristiriitojen ratkaiseminen ja Swift-laajennukset
← Takaisin: Swift Academy