A package manifest describes the package name and the products it builds.

Model manifest fields

packageName
package_manifest.swift
Replay: real traced execution (multi-file project)
let packageName = "TraceBook"
let libraryName = "\(packageName)Core"
let toolName = "\(packageName)CLI"
let products = [libraryName, toolName]
let productList = products.joined(separator: ",")
let summary = "\(packageName): \(productList)"

print(summary)
let packageName = "ReplayKit"
let libraryName = "\(packageName)Core"
let toolName = "\(packageName)CLI"
let products = [libraryName, toolName]
let productList = products.joined(separator: ",")
let summary = "\(packageName): \(productList)"

print(summary)
let packageName = "ModuleGuide"
let libraryName = "\(packageName)Core"
let toolName = "\(packageName)CLI"
let products = [libraryName, toolName]
let productList = products.joined(separator: ",")
let summary = "\(packageName): \(productList)"

print(summary)
  1. packageName ← TraceBook, libraryName ← TraceBookCore, toolName ← TraceBookCLI

    1let packageName→ TraceBook = "TraceBook"  //@packageName="ReplayKit", "ModuleGuide"2let libraryName→ TraceBookCore = "\(packageNameTraceBook)Core"3let toolName→ TraceBookCLI = "\(packageNameTraceBook)CLI"4let products→ ["TraceBookCore", "TraceBookCLI"] = [libraryNameTraceBookCore, toolNameTraceBookCLI]5let productList→ TraceBookCore,TraceBookCLI = products["TraceBookCore", "TraceBookCLI"].joined(separator: ",")6let summary→ TraceBook: TraceBookCore,TraceBookCLI = "\(packageNameTraceBook): \(productListTraceBookCore,TraceBookCLI)"78print(summaryTraceBook: TraceBookCore,TraceBookCLI)
    outputTraceBook: TraceBookCore,TraceBookCLI
  1. packageName ← ReplayKit, libraryName ← ReplayKitCore, toolName ← ReplayKitCLI

    1let packageName→ ReplayKit = "ReplayKit"2let libraryName→ ReplayKitCore = "\(packageNameReplayKit)Core"3let toolName→ ReplayKitCLI = "\(packageNameReplayKit)CLI"4let products→ ["ReplayKitCore", "ReplayKitCLI"] = [libraryNameReplayKitCore, toolNameReplayKitCLI]5let productList→ ReplayKitCore,ReplayKitCLI = products["ReplayKitCore", "ReplayKitCLI"].joined(separator: ",")6let summary→ ReplayKit: ReplayKitCore,ReplayKitCLI = "\(packageNameReplayKit): \(productListReplayKitCore,ReplayKitCLI)"78print(summaryReplayKit: ReplayKitCore,ReplayKitCLI)
    outputReplayKit: ReplayKitCore,ReplayKitCLI
  1. packageName ← ModuleGuide, libraryName ← ModuleGuideCore, toolName ← ModuleGuideCLI

    1let packageName→ ModuleGuide = "ModuleGuide"2let libraryName→ ModuleGuideCore = "\(packageNameModuleGuide)Core"3let toolName→ ModuleGuideCLI = "\(packageNameModuleGuide)CLI"4let products→ ["ModuleGuideCore", "ModuleGuideCLI"] = [libraryNameModuleGuideCore, toolNameModuleGuideCLI]5let productList→ ModuleGuideCore,ModuleGuideCLI = products["ModuleGuideCore", "ModuleGuideCLI"].joined(separator: ",")6let summary→ ModuleGuide: ModuleGuideCore,ModuleGuideCLI = "\(packageNameModuleGuide): \(productListModuleGuideCore,ModuleGuideCLI)"78print(summaryModuleGuide: ModuleGuideCore,ModuleGuideCLI)
    outputModuleGuide: ModuleGuideCore,ModuleGuideCLI
manifest SwiftPM reads `Package.swift` as Swift code. This example models manifest data as ordinary values so the replay can show how the fields relate.