Swift Academy · บทเรียน

Package.swift: เป้าหมาย ผลิตภัณฑ์ และการพึ่งพา

ทำความเข้าใจองค์ประกอบของไฟล์กำกับ Package.swift และการกำหนดผลิตภัณฑ์ไลบรารีกับไฟล์ปฏิบัติการ

บทเรียน 1 จาก 413 ขั้นตอน

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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. Package.swift: เป้าหมาย ผลิตภัณฑ์ และการพึ่งพา
  2. แพ็กเกจภายในเครื่องและโมดูลฟีเจอร์
  3. เป้าหมายไบนารีและ XCFrameworks
  4. การกำหนดเวอร์ชัน การแก้ข้อขัดแย้ง และปลั๊กอิน Swift
← กลับไปที่ Swift Academy