Package.swift: เป้าหมาย ผลิตภัณฑ์ และการพึ่งพา
ทำความเข้าใจองค์ประกอบของไฟล์กำกับ Package.swift และการกำหนดผลิตภัณฑ์ไลบรารีกับไฟล์ปฏิบัติการ
Package.swift: เป้าหมาย ผลิตภัณฑ์ และการพึ่งพา เป็นบทเรียน Swift Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Swift Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน
ภาพรวม Package.swift
Package.swift เป็นไฟล์แสดงรายการสำหรับตัวจัดการแพ็กเกจสวิฟต์ โดยประกาศชื่อแพ็กเกจ เวอร์ชันสวิฟต์ เป้าหมาย ผลิตภัณฑ์ และการพึ่งพา
import PackageDescription
let package = Package(
name: "MyLibrary",
platforms: [.iOS(.v16), .macOS(.v13)],
products: [],
dependencies: [],
targets: []
)เป้าหมาย
เป้าหมายเป็นหน่วยพื้นฐานสำหรับสร้างแพ็กเกจ ได้แก่ .target (โค้ดไลบรารีหรือไฟล์ปฏิบัติการ) และ .testTarget (โค้ดการทดสอบ)
.target(
name: "MyFeature",
dependencies: [],
path: "Sources/MyFeature"
),
.testTarget(
name: "MyFeatureTests",
dependencies: ["MyFeature"],
path: "Tests/MyFeatureTests"
)ผลิตภัณฑ์
ผลิตภัณฑ์กำหนดสิ่งที่แพ็กเกจเปิดเผยให้ผู้ใช้แพ็กเกจ ได้แก่ .library หรือ .executable
.library(
name: "MyFeature",
targets: ["MyFeature"]
),
.executable(
name: "MyTool",
targets: ["MyTool"]
)ไลบรารีแบบไดนามิกกับแบบสแตติก
ระบุการลิงก์แบบ .dynamic หรือ .static แบบสแตติกเป็นค่าเริ่มต้นและมีค่าใช้จ่ายส่วนเกินน้อยกว่า ส่วนแบบไดนามิกช่วยให้หลายโมดูลใช้ร่วมกันได้
.library(
name: "MySDK",
type: .dynamic,
targets: ["MySDK"]
)การพึ่งพาภายนอก
ประกาศการพึ่งพาแพ็กเกจระยะไกลด้วยที่อยู่เว็บและข้อกำหนดเวอร์ชัน
.package(url: "https://github.com/apple/swift-algorithms", from: "1.0.0"),
.package(url: "https://github.com/pointfreeco/swift-composable-architecture", exact: "1.0.0")การใช้การพึ่งพาภายนอกในเป้าหมาย
อ้างอิงผลิตภัณฑ์ของแพ็กเกจภายนอกในการพึ่งพาของเป้าหมายด้วย .product(name:package:)
.target(
name: "MyApp",
dependencies: [
.product(name: "Algorithms", package: "swift-algorithms"),
.product(name: "ComposableArchitecture", package: "swift-composable-architecture")
]
)การพึ่งพาแพ็กเกจภายในเครื่อง
อ้างอิงไดเรกทอรีแพ็กเกจภายในเครื่องสำหรับการตั้งค่าโมโนรีโพหรือการปรับปรุงแพ็กเกจที่คุณเป็นเจ้าของ
.package(path: "../MySharedLibrary"),ข้อกำหนดเวอร์ชันสวิฟต์
กำหนดเวอร์ชันขั้นต่ำของเครื่องมือสวิฟต์ไว้ด้านบนสุดของ Package.swift และกำหนดข้อกำหนดแพลตฟอร์มในตัวเริ่มต้นแพ็กเกจ
// swift-tools-version: 5.9
import PackageDescription
let package = Package(
name: "MyPackage",
platforms: [.iOS(.v17)],
// ...
)ทรัพยากรในเป้าหมาย
รวมทรัพยากรที่ไม่ใช่โค้ด เช่น รูปภาพ เจสัน และการแปลภาษา ด้วยพารามิเตอร์ resources:
.target(
name: "MyFeature",
resources: [
.process("Resources"),
.copy("Fixtures/test_data.json")
]
)การตั้งค่าการสร้างและเป้าหมายภาษา C
เป้าหมายสามารถกำหนดแฟล็กของภาษา C และการตั้งค่าของสวิฟต์ได้ ซึ่งมีประโยชน์สำหรับการห่อหุ้มไลบรารีภาษา C หรือการคอมไพล์แบบมีเงื่อนไข
.target(
name: "CWrapper",
cSettings: [.headerSearchPath("include")],
swiftSettings: [.define("DEBUG", .when(configuration: .debug))]
)การแก้ไขการพึ่งพาของแพ็กเกจ
เรียกใช้ swift package resolve เพื่อดึงการพึ่งพา เวอร์ชันที่แก้ไขแล้วจะถูกจัดเก็บไว้ใน Package.resolved
// Commands:
// swift package resolve – fetch dependencies
// swift package update – update to latest compatible versions
// swift build – build the package
// swift test – run testsตรวจสอบความเข้าใจอย่างรวดเร็ว
องค์ประกอบใดของ Package.swift ที่กำหนดสิ่งที่แพ็กเกจเปิดเผยให้แพ็กเกจอื่นหรือแอปที่พึ่งพาแพ็กเกจนั้น
สรุปบทเรียน
Package.swift: targets คือหน่วยการสร้าง products เปิดเผยหน่วยเหล่านั้นให้ผู้ใช้แพ็กเกจ และ dependencies อ้างอิงแพ็กเกจระยะไกลหรือภายในเครื่อง ใช้ .product(name:package:) เพื่อลิงก์เป้าหมายภายนอก บันทึก Package.resolved ไว้ในโครงการที่ทำงานเป็นทีมเพื่อล็อกเวอร์ชัน
เรียนรู้ Swift ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 122
- บทเรียน
- 409
คำถามที่พบบ่อย
บทเรียน “Package.swift: เป้าหมาย ผลิตภัณฑ์ และการพึ่งพา” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “Package.swift: เป้าหมาย ผลิตภัณฑ์ และการพึ่งพา” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Swift Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “Package.swift: เป้าหมาย ผลิตภัณฑ์ และการพึ่งพา”
ทำความเข้าใจองค์ประกอบของไฟล์กำกับ Package.swift และการกำหนดผลิตภัณฑ์ไลบรารีกับไฟล์ปฏิบัติการ คุณปฏิบัติ Swift Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Swift Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Swift Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “Package.swift: เป้าหมาย ผลิตภัณฑ์ และการพึ่งพา” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Swift Academy นี้ได้ไหม
ได้ บทเรียน Swift Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- Package.swift: เป้าหมาย ผลิตภัณฑ์ และการพึ่งพา
- แพ็กเกจภายในเครื่องและโมดูลฟีเจอร์
- เป้าหมายไบนารีและ XCFrameworks
- การกำหนดเวอร์ชัน การแก้ข้อขัดแย้ง และปลั๊กอิน Swift