0Pricing
Swift Academy · Lección

Package.swift: targets, productos y dependencias

Conozca la estructura de un manifiesto Package.swift y defina productos de biblioteca y ejecutables.

Package.swift: targets, productos y dependencias es una lección gratuita de Swift Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Swift Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Swift Academy incluye 4 lecciones en total.

Descripción general de Package.swift

Package.swift es el manifiesto de Swift Package Manager. Declara el nombre del paquete, la versión de Swift, los destinos, los productos y las dependencias.

import PackageDescription
let package = Package(
  name: "MyLibrary",
  platforms: [.iOS(.v16), .macOS(.v13)],
  products: [],
  dependencies: [],
  targets: []
)

Destinos

Los destinos son los componentes básicos: .target (código de biblioteca o ejecutable) y .testTarget (código de pruebas).

.target(
  name: "MyFeature",
  dependencies: [],
  path: "Sources/MyFeature"
),
.testTarget(
  name: "MyFeatureTests",
  dependencies: ["MyFeature"],
  path: "Tests/MyFeatureTests"
)

Productos

Los productos definen lo que un paquete expone a sus consumidores: .library o .executable.

.library(
  name: "MyFeature",
  targets: ["MyFeature"]
),
.executable(
  name: "MyTool",
  targets: ["MyTool"]
)

Bibliotecas dinámicas frente a estáticas

Especifique el enlazado .dynamic o .static. El enlazado estático es el predeterminado y genera menos sobrecarga; el dinámico permite compartir código entre módulos.

.library(
  name: "MySDK",
  type: .dynamic,
  targets: ["MySDK"]
)

Dependencias externas

Declare las dependencias de paquetes remotos mediante una URL y un requisito de versión.

.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")

Uso de dependencias externas en los destinos

Haga referencia a los productos de paquetes externos en las dependencias del destino mediante .product(name:package:).

.target(
  name: "MyApp",
  dependencies: [
    .product(name: "Algorithms", package: "swift-algorithms"),
    .product(name: "ComposableArchitecture", package: "swift-composable-architecture")
  ]
)

Dependencias de paquetes locales

Haga referencia a un directorio de paquete local para configuraciones de monorepo o para trabajar en un paquete del que sea propietario.

.package(path: "../MySharedLibrary"),

Requisitos de versión de Swift

Establezca la versión mínima de las herramientas de Swift al principio de Package.swift y los requisitos de plataforma en el inicializador del paquete.

// swift-tools-version: 5.9
import PackageDescription
let package = Package(
  name: "MyPackage",
  platforms: [.iOS(.v17)],
  // ...
)

Recursos en los destinos

Incluya recursos que no sean código (imágenes, JSON y localización) mediante el parámetro resources:.

.target(
  name: "MyFeature",
  resources: [
    .process("Resources"),
    .copy("Fixtures/test_data.json")
  ]
)

Configuración de compilación y destinos C

Los destinos pueden configurar indicadores de C y ajustes de Swift, lo que resulta útil para envolver bibliotecas de C o realizar compilación condicional.

.target(
  name: "CWrapper",
  cSettings: [.headerSearchPath("include")],
  swiftSettings: [.define("DEBUG", .when(configuration: .debug))]
)

Resolución de paquetes

Ejecute swift package resolve para obtener las dependencias. Las versiones resueltas se almacenan en 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

Comprobación rápida

¿Qué elemento de Package.swift define lo que el paquete expone a otros paquetes o aplicaciones que dependen de él?

Resumen de la lección

Package.swift: los targets son unidades de compilación, los products los exponen a los consumidores y las dependencies hacen referencia a paquetes remotos o locales. Use .product(name:package:) para enlazar destinos externos. Confirme Package.resolved para fijar las versiones en los proyectos de equipo.

Preguntas frecuentes

¿La lección «Package.swift: targets, productos y dependencias» es gratis?

Sí — el texto completo de «Package.swift: targets, productos y dependencias» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Swift Academy, actualiza a CoddyKit PRO. El curso de Swift Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Package.swift: targets, productos y dependencias»?

Conozca la estructura de un manifiesto Package.swift y defina productos de biblioteca y ejecutables. Practicas Swift Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Swift Academy?

No se requiere experiencia previa. Swift Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «Package.swift: targets, productos y dependencias»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Swift Academy?

Sí. Cada lección de Swift Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Package.swift: targets, productos y dependencias
  2. Paquetes locales y módulos de funcionalidades
  3. Targets binarios y XCFrameworks
  4. Versionado, resolución de conflictos y plugins de Swift
← Volver a Swift Academy