-
Notifications
You must be signed in to change notification settings - Fork 0
[Tuist]
serena.ios edited this page May 20, 2024
·
5 revisions
mise 란?
mise는 [meez]라 발음된다.이는 Dev tool들과 런타임을 설치하고 관리하여, 이러한 도구 설치를 단순화 하고 다른 프로젝트에서 사용할 도구의 버전을 지정할 수 있게 한다.
mise는 수백 가지의 개발 도구를 지원한다.
mise는 개발자 간에 프로젝트 내에서 일반적인 작업을 공유하고 파일 변경 시 작업을 실행하는 것과 같은 작업을 쉽게 만들어준다.
$ 란?
cmd 예시코드를 보면 `$`이 붙어있는데, 이는 터미널 명령어 를 나타낸다. 쉘을 열어서 $을 제외한 명령어를 입력하면된다.아래 명령어를 입력하여 설치한다.
curl https://mise.run | sh
mise
가 잘 설치되었는지 확인한다.
~/.local/bin/mise --version
mise 2024.x.x 이러한 형태로 출력되면 정상 설치가 된 것이다.
echo 'eval "$(~/.local/bin/mise activate zsh)"' >> ~/.zshrc
Tuist는 기본적으로 Tuist의 버전을 관리하고 활성화하는 도구로 mise를 사용한다.
Tuist를 설치하기 위한 명령어로 몇가지가 존재한다.
- 현재 버전으로 Tuist 설치하는 명령어
mise install tuist
- 특정 버전으로 Tuist 설치하는 명령어
mise install tuist@x.y.z
- 프로젝트 파일을 생성할 경로로 들어간다.
cd /...원하는경로
- 해당 경로에 새 디렉토리를 생성한다.
mkdir MyApp
- 생성한 디렉토리로 이동한다.
cd MyApp
- 현 디렉토리에서 프로젝트를 초기화한다.
tuist init --platform ios
이때 Project.swift
가 생성된다
import ProjectDescription
let project = Project(
name: "MyApp",
targets: [
.target(
name: "MyApp",
destinations: .iOS,
product: .app,
bundleId: "io.tuist.MyApp",
infoPlist: .extendingDefault(
with: [
"UILaunchStoryboardName": "LaunchScreen.storyboard",
]
),
sources: ["MyApp/Sources/**"],
resources: ["MyApp/Resources/**"],
dependencies: []
),
.target(
name: "MyAppTests",
destinations: .iOS,
product: .unitTests,
bundleId: "io.tuist.MyAppTests",
infoPlist: .default,
sources: ["MyApp/Tests/**"],
resources: [],
dependencies: [.target(name: "MyApp")]
),
]
)
- 아래 명령어를 사용하여 프로젝트를 편집 실행할 수 있다.
tuist edit
-
Tuist/
혹은 프로젝트 루트에Package.swift
를 만들어야 한다.
현재 Tuist/Package.swift 로 생성
// swift-tools-version: 5.9
import PackageDescription
#if TUIST
import ProjectDescription
import ProjectDescriptionHelpers
let packageSettings = PackageSettings(
productTypes: [
"Alamofire": .framework, // default is .staticFramework
]
)
#endif
let package = Package(
name: "PackageName",
dependencies: [
.package(url: "https://github.com/Alamofire/Alamofire", from: "5.0.0"),
]
)
-
해당 파일은 외부 종속성을 선언하기 위한 인터페이스일뿐이기 때문에 target이나 product를 해당 파일에 정의하지 않는다.
-
아래 명령어를 사용하여 Tuist/Dependencies 디렉토리에 의존성을 가져올 수 있다.
tuist install
# Resolving and fetching dependencies.
# Installing Swift Package Manager dependencies.
-
Projet.swift
파일에서TargetDependency.external
을 사용하여 해당 의존성을 참조할 수 있다.
import ProjectDescription
let project = Project(
name: "App",
organizationName: "tuist.io",
targets: [
.target(
name: "App",
destinations: [.iPhone],
product: .app,
bundleId: "io.tuist.app",
deploymentTargets: .iOS("13.0"),
infoPlist: .default,
sources: ["Targets/App/Sources/**"],
dependencies: [
// 해당 부분
.external(name: "Alamofire"),
]
),
]
)
🔥 Dependency Naming 체크하기 Git에 Package 예시 참고해서 이름 체크하기
위 세팅이 끝나면 Tuist 설치하여 정상 설치 확인하기
tuist install
아래 명령어로 workspace 생성하기
tuist generate
- 본인이 최초 해당 레포 클론했다?
make bootstrap
- 변경된 사항이나 적용한걸로 다시 tuist 돌려서 프로젝트 오픈하고 싶다?
make generate
- tuist 설정 변경이나 추가하고 싶다?
tuist edit