การกำหนดเวอร์ชัน การแก้ข้อขัดแย้ง และปลั๊กอิน Swift
จัดการช่วงเวอร์ชัน แก้ข้อขัดแย้งของการพึ่งพา และใช้ปลั๊กอินเครื่องมือบิลด์
การกำหนดเวอร์ชัน การแก้ข้อขัดแย้ง และปลั๊กอิน Swift เป็นบทเรียน Swift Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Swift Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน
การกำหนดเวอร์ชันตามความหมายใน SPM
SPM ใช้ semver: MAJOR.MINOR.PATCH ประกาศข้อกำหนดด้วย from:, exact: หรือ .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 จะตรึงเวอร์ชันที่แน่นอนของการพึ่งพาทั้งหมด ให้ส่งไฟล์นี้เข้าไปในระบบควบคุมเวอร์ชันสำหรับแอป แต่ไม่ต้องใส่ไฟล์นี้สำหรับไลบรารี
// Package.resolved (auto-generated):
// Pins exact commit hash and version for every dependency
// Run "swift package update" to update pinned versionsการแก้ไขข้อขัดแย้งของเวอร์ชัน
เมื่อแพ็กเกจสองรายการต้องการการพึ่งพาเดียวกันคนละเวอร์ชัน SPM จะพยายามหาเวอร์ชันที่เข้ากันได้ หากไม่สามารถแก้ไขข้อขัดแย้งได้ การสร้างจะล้มเหลวพร้อมข้อผิดพลาด
// 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การบังคับใช้เวอร์ชัน
เพิ่มการพึ่งพาที่ขัดแย้งกันลงใน Package.swift ของแอปโดยตรง เพื่อแทนที่เวอร์ชันที่ SPM จะเลือกใช้ตามปกติ
// Force Logging 1.5.0 by declaring it directly:
.package(url: "https://github.com/apple/swift-log", exact: "1.5.0")ปลั๊กอินเครื่องมือสร้าง
ปลั๊กอินเครื่องมือสร้างจะทำงานระหว่างการสร้าง เพื่อสร้างโค้ดต้นฉบับ ประมวลผลทรัพยากร หรือเรียกใช้เครื่องมือตรวจสอบโค้ดโดยอัตโนมัติ
// In Package.swift:
.plugin(
name: "SourceGenerator",
capability: .buildTool()
)การสร้างปลั๊กอินเครื่องมือสร้าง
ปลั๊กอินเครื่องมือสร้างต้องสอดคล้องกับ BuildToolPlugin และส่งคืน BuildCommand หรือ 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]
)]
}
}ปลั๊กอินคำสั่ง
ปลั๊กอินคำสั่งจะทำงานเมื่อเรียกใช้จาก Xcode หรือ CLI เหมาะสำหรับการจัดรูปแบบ การตรวจสอบโค้ด หรือการสร้างเอกสาร
// In Package.swift:
.plugin(
name: "FormatPlugin",
capability: .command(intent: .sourceCodeFormatting())
)การเรียกใช้ปลั๊กอินคำสั่ง
เรียกใช้ปลั๊กอินคำสั่งจากเทอร์มินัลหรือเมนูคลิกขวาใน Xcode
// CLI:
swift package plugin format-source-code
// Xcode: right-click target → "Format Source Code"การใช้ SwiftLint เป็นปลั๊กอินสร้าง
SwiftLint มาพร้อมปลั๊กอิน SPM ซึ่งจะทำงานโดยอัตโนมัติทุกครั้งที่สร้าง
.package(url: "https://github.com/realm/SwiftLint", from: "0.54.0"),
// In target:
.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLint")พื้นที่แยกของปลั๊กอิน
ปลั๊กอินจะทำงานในพื้นที่แยกที่มีสิทธิ์เข้าถึงระบบไฟล์อย่างจำกัดเพื่อความปลอดภัย และเขียนได้เฉพาะในไดเรกทอรีทำงานที่กำหนดไว้เท่านั้น
// Accessible from plugins:
// context.pluginWorkDirectory — writable work dir
// context.package.directory — read-only source
// target.sourceFiles — source file listตรวจสอบความเข้าใจ
Package.resolved มีจุดประสงค์อะไรในแพ็กเกจ Swift
ทบทวนบทเรียน
ใช้ช่วงเวอร์ชันแบบ semver ใน Package.swift ส่ง Package.resolved เข้าไปในระบบควบคุมเวอร์ชันสำหรับแอปเพื่อให้สร้างซ้ำได้ผลลัพธ์เดิม แก้ไขข้อขัดแย้งของเวอร์ชันด้วยการประกาศการพึ่งพาโดยตรง ปลั๊กอินเครื่องมือสร้างจะทำงานอัตโนมัติระหว่างการสร้าง เช่น เครื่องมือตรวจสอบโค้ดและเครื่องมือสร้างโค้ด ปลั๊กอินคำสั่งจะทำงานเมื่อเรียกใช้ และปลั๊กอินจะทำงานภายในพื้นที่แยกเพื่อความปลอดภัย
คำถามที่พบบ่อย
บทเรียน “การกำหนดเวอร์ชัน การแก้ข้อขัดแย้ง และปลั๊กอิน Swift” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การกำหนดเวอร์ชัน การแก้ข้อขัดแย้ง และปลั๊กอิน Swift” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Swift Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การกำหนดเวอร์ชัน การแก้ข้อขัดแย้ง และปลั๊กอิน Swift”
จัดการช่วงเวอร์ชัน แก้ข้อขัดแย้งของการพึ่งพา และใช้ปลั๊กอินเครื่องมือบิลด์ คุณปฏิบัติ Swift Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Swift Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Swift Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “การกำหนดเวอร์ชัน การแก้ข้อขัดแย้ง และปลั๊กอิน Swift” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Swift Academy นี้ได้ไหม
ได้ บทเรียน Swift Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- Package.swift: เป้าหมาย ผลิตภัณฑ์ และการพึ่งพา
- แพ็กเกจภายในเครื่องและโมดูลฟีเจอร์
- เป้าหมายไบนารีและ XCFrameworks
- การกำหนดเวอร์ชัน การแก้ข้อขัดแย้ง และปลั๊กอิน Swift