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 testsVerificaçã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
- Package.swift: destinos, produtos e dependências
- Pacotes locais e módulos de funcionalidades
- Destinos binários e XCFrameworks
- Versionamento, resolução de conflitos e plugins do Swift