0Pricing
Swift Academy · Aula

Package.swift: destinos, produtos e dependências

Conheça a estrutura de um manifesto Package.swift e defina produtos de biblioteca e executáveis.

Package.swift: destinos, produtos e dependências é uma aula grátis de Swift Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Swift Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Swift Academy inclui 4 aulas no total.

Visão Geral do Package.swift

Package.swift é o manifesto do Swift Package Manager. Ele declara o nome do pacote, a versão do Swift, os destinos, os produtos e as dependências.

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

Destinos

Os destinos são os blocos básicos de construção: .target (código de biblioteca/executável) e .testTarget (código de teste).

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

Produtos

Os produtos definem o que um pacote expõe aos consumidores: .library ou .executable.

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

Bibliotecas Dinâmicas versus Estáticas

Especifique a vinculação .dynamic ou .static. A vinculação estática é padrão e gera menos sobrecarga; a dinâmica permite o compartilhamento entre módulos.

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

Dependências Externas

Declare dependências de pacotes remotos com uma URL e um requisito de versão.

.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 Dependências Externas nos Destinos

Faça referência aos produtos de pacotes externos nas dependências dos destinos usando .product(name:package:).

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

Dependências de Pacotes Locais

Faça referência a um diretório de pacote local em configurações de monorepositório ou ao trabalhar em um pacote de sua propriedade.

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

Requisitos de Versão do Swift

Defina a versão mínima das ferramentas do Swift no início de Package.swift e os requisitos de plataforma no inicializador do pacote.

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

Recursos nos Destinos

Inclua recursos que não sejam código, como imagens, JSON e localização, usando o parâmetro resources:.

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

Configurações de Compilação e Destinos C

Os destinos podem configurar sinalizadores C e configurações do Swift, algo útil para encapsular bibliotecas C ou realizar compilação condicional.

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

Resolução de Pacotes

Execute swift package resolve para obter as dependências. As versões resolvidas são armazenadas em 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

Verificação Rápida

Qual elemento de Package.swift define o que o pacote expõe a outros pacotes ou aplicativos que dependem dele?

Recapitulação da lição

Package.swift: targets são unidades de compilação, products os expõem aos consumidores e dependencies fazem referência a pacotes remotos ou locais. Use .product(name:package:) para vincular destinos externos. Envie Package.resolved ao repositório para fixar as versões nos projetos da equipe.

Perguntas Frequentes

A aula “Package.swift: destinos, produtos e dependências” é grátis?

Sim — o texto completo de “Package.swift: destinos, produtos e dependências” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Swift Academy, atualize para CoddyKit PRO. O curso de Swift Academy inclui 4 aulas no total.

O que vou aprender em “Package.swift: destinos, produtos e dependências”?

Conheça a estrutura de um manifesto Package.swift e defina produtos de biblioteca e executáveis. Você pratica Swift Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Swift Academy?

Nenhuma experiência prévia é necessária. Swift Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Package.swift: destinos, produtos e dependências”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Swift Academy?

Sim. Cada aula de Swift Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Package.swift: destinos, produtos e dependências
  2. Pacotes locais e módulos de funcionalidades
  3. Destinos binários e XCFrameworks
  4. Versionamento, resolução de conflitos e plugins do Swift
← Voltar para Swift Academy