Evitando conflitos 없음 Xcode

10038 단어 xcodetuistgitios

소개



O Tuist 파라 gerar projetos e workspaces do Xcode e que com isso nos evitamos conflitos na hora do merge do merge, resolvemos problemas parager o projeto que vai ser alterado(모도 포코).

인스타라상



A instalação é muito simples, basta executar o comando no terminal:curl -Ls https://install.tuist.io | bash

Criando um projeto novo



Se for um novo projeto utilização do Tuist é super simples.
Basta criar uma 파스타 e executar o tuist init
mkdir MyApp
cd MyApp
tuist init --platform ios


O comando init irá gerar os arquivos base, Info.plist , AppDelegate.swift , arquivos de teste e o Project.swift que contém as configurações do projeto.

Migrando um projeto Existente



A migração no meu caso foi 평온한 porque o projeto é simples e tenho um Workspace com vários projetos que 의존 do Core e uma únicadependência externa em um Target de teste.

핵심 마이그레이션 o 코어, 현재 작업 공간에 대한 종속성 정의, 프로젝트 구성에 대한 해결, 작업 공간 구성에 대한 해결.
Na 파스타 데 카다 프로제토 크리에이 o arquivo Project.swift , no diretório raíz o Workspace.swift e a 파스타 Tuist com o arquivo Dependencies.swift

Configurações do projeto



O Project.swift contém a configuração do projeto. É nesse arquivo onde são definidos nome, Organização, 목표, 스키마, 외부 코이사스.

Comecei fazendo o import do framework ProjectDescription esse arquivo deve inicializar uma variável do tipo Project que pode ter qualquer nome, mas a recomendação da documentação é 0145067 memoar.como

Um project precisa obrigatoriamente dos parametros: project e name que é um array do tipo Target.

No Target e especificado o nome, plataforma, tipo do produto, bundle e os arquivos de codigo.

let target = Target(name: "App",
                    platform: .iOS,
                    product: .app,
                    bundleId: "com.rafa.example",
                    infoPlist: "Info.plist",
                    sources: "Sources/**",
                    dependencies: [])



let project = Project(
    name: "MyProject",
    targets: [target]
)


Dependências externas



A integração com dependências externas ainda está em alpha, como é avisado na documentação

No momento que estou escrevendo esse texto a integração com Cocoapods ainda não é suportada.



Cada projeto pode ter suasdependências configuradas Individualmente, basta criar a 파스타 targets com o arquivo Tuist dentro dela.
No meu caso, fiz isso na 파스타 raiz do projeto porque tenho uma únicadependência externa.

import ProjectDescription

let dependencies = Dependencies(
    carthage: [
        .github(path: "Alamofire/Alamofire", requirement: .exact("5.0.4")),
    ],
    swiftPackageManager: [
        .remote(url: "https://github.com/Alamofire/Alamofire", requirement: .upToNextMajor(from: "5.0.0")),
    ],
    platforms: [.iOS]
)


Feito isso baixe Feito isso baixe Dependências rodando 역Dependencies.swift . Uma 파스타 chamada Dependencies será criada e o codigo será baixado nela.

De volta ao tuist dependencies fetch é necessário registrar no Target a 종속성.

let target = Target(name: "App",
                    platform: .iOS,
                    product: .app,
                    bundleId: "com.rafa.example",
                    infoPlist: "Info.plist",
                    sources: "Sources/**",
                    dependencies: [
                .external(name: "Alamofire"),
            ])


작업 공간 구성



Por padrão o Project.swift cria um Workspace com o mesmo nome do projeto e já inclui asdependências.
프로젝트에 대한 계획이 없고 모노레포와 사전에 사전 구성이 필요하지 않습니다.

import ProjectDescription

let workspace = Workspace(
    name: "ProjectWorkspace",
    projects: [
        "Project1",
        "Project2",
        "Project3"
    ],
    schemes: []
)


Por padrão os schemas são gerados automaticamente, mas podem ser personalizados para configurar as ações de cada um.

Gerando os arquivos



A configuração é essa,dependendo do tamanho do projeto pode ser um pouco cansativa mas os ganhos são compensatórios.

Depois de tudo configurado, é só rodar o tuist generate para baixar asdependências e depois tuist dependencies fetch para gerar os projetos/workspaces.

Testei outras ferramentas mas resolvi adotar o Tuist por utilizar Swift e não Yaml, possibilidade de fazer cache dos modulos, cache dos testes, 스크린샷 de 종속성 e por 고려 a adoção fácil no projeto em que trabalho.
Finalizei Implementando o xcdiff evitando que o tuist generate fosse alterado manualmente.

에 이소! :)

링크



Tuist.io
Tuist docs
xcdiff

좋은 웹페이지 즐겨찾기