๐ŸŽ iOS

[Tuist] ํŠธ์œ„์ŠคํŠธ ์ถ”๋ฉด์„œ~๐Ÿ•บ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ชจ๋“ˆํ™” ์‹œํ‚ค๊ธฐ

gom1n 2024. 5. 15. 18:27

Tuist๋ฅผ ์“ฐ๊ณ ์ž ํ•˜๋Š” ์ด์œ 

Tuist๋ฅผ ์“ฐ๋ฉด, ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๊ตฌ์กฐ๋Œ€๋กœ ๋ชจ๋“ˆ์„ ์ƒ์„ฑํ•ด์ฃผ๊ณ  ํ”„๋กœ์ ํŠธ๋ฅผ ๋ถ„๋ฆฌํ•ด์ค€๋‹ค.

์š”์ฆ˜๋”ฐ๋ผ ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ์ฝ”๋“œ๋ฅผ ๋” ํŽธํ•˜๊ฒŒ ์งค ์ˆ˜ ์žˆ์„๊นŒ๋ฅผ ์ƒ๊ฐํ•˜๋ฉฐ ์ž‘์—…์„ ํ–ˆ๋˜ ํ„ฐ๋ผ,

ํ•œ๋ฒˆ์— ๋ชจ๋“ˆํ™”๋ฅผ ์ž๋™์œผ๋กœ ์‹œ์ผœ์ฃผ๋Š” ๋„๊ตฌ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•ด์„œ ๊ณ„์† ์จ๋ณด๊ณ  ์‹ถ์—ˆ๋‹ค.

 

์‚ฌ์‹ค Tuist๋Š” ์ด์ „๋ถ€ํ„ฐ ์•Œ๊ณ  ์žˆ์—ˆ์ง€๋งŒ, ๊ฒŒ์œผ๋ฅธ ํƒ“์—...^^

๊ทธ๋™์•ˆ์˜ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์ฝ”๋“œ๋ฅผ ํ•œ๋ฒˆ์— ์ž‘์—…ํ•˜๊ฑฐ๋‚˜, Framework๋กœ ์ถ”์ถœ์‹œ์ผœ Embeded/Link ์‹œํ‚ค๋Š” ๋ฐฉ์‹์œผ๋กœ๋งŒ ์ž‘์—…ํ–ˆ์—ˆ๋‹ค.

์œ„์˜ ๋ฐฉ๋ฒ•์€ ๊ต‰์žฅํžˆ! ๋น„ํšจ์œจ์ ์ด๊ณ  ๊ท€์ฐฎ์•˜์ง€๋งŒ, ๊ธฐ์กด ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ฝ”์ฝ”์•„ํŒŸ์„ ๊ทธ๋Œ€๋กœ ์ด์–ด์„œ ์ž‘์—…ํ•˜๊ณ  ์‹ถ์–ด์„œ ๊ทธ๋ ‡๊ฒŒ ์ž‘์—…ํ–ˆ๋˜ ๊ฒƒ์ด๋‹ค.

 

๊ทธ๋Ÿฌ๋‚˜ ์ตœ๊ทผ ์ƒˆ๋กœ์šด ํ”Œ์ ์„ ์‹œ์ž‘ํ•˜๊ฒŒ ๋˜๋ฉฐ,

์ด์™• ๋…ธ๋ฒ ์ด์Šค๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฑฐ Tuist๋ฅผ ๋„์ž…ํ•ด๋ณด์ž๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.

 

Tuist ์„ค์น˜

์ผ๋‹จ Tuist๋ฅผ ์„ค์น˜ํ•ด์•ผํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ตฌ๊ธ€๋ง ํ•ด๋ณด๊ณ  ๋ƒ…๋”ฐ ๋”ฐ๋ผํ•˜๋Š”๋ฐ ์ž˜ ๋˜์ง€ ์•Š์•„์„œ ๋‹นํ™ฉ์Šค๋Ÿฌ์› ๋‹ค.

์ฐพ์•„๋ณธ ๊ฒฐ๊ณผ ๋‹ค๋ฅธ ํฌ์ŠคํŒ…์— ๊ธฐ์žฌ๋˜์–ด์žˆ๋˜ curl ๋ฐฉ์‹์€ ์ด์ œ ์ง€์›ํ•ด์ฃผ์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ•œ๋‹ค.

์—ญ์‹œ ๋ƒ…๋”ฐ ๊ตฌ๊ธ€๋ง๋ณด๋‹ค๋Š” Docs๋ฅผ ๋ณด๋Š”๊ฒŒ ํ›จ์”ฌ ์ •ํ™•ํ•˜๋‹ค!^^

 

 

https://github.com/tuist/tuist

 

GitHub - tuist/tuist: A Swifty toolchain to build better Apple apps, faster

A Swifty toolchain to build better Apple apps, faster - tuist/tuist

github.com

์œ„ ๋งํฌ๋Š” Tuist Github์ด๋ฉฐ, ๊ฐ€๋ณด๋ฉด mise ๋ฅผ ์“ฐ๋Š” ๋ฐฉ์‹์„ ๊ถŒ์œ ํ•˜๊ณ  ์žˆ๋‹ค.

 

brew๋กœ๋Š” ์„ค์น˜๊ฐ€ ์•ˆ๋˜๋Š”๊ตฐ...

mise๋Š” ์„ค์น˜๋˜์–ด์žˆ์ง€ ์•Š์•˜์–ด์„œ, mise ๋˜ํ•œ ๊ฐ™์ด ์„ค์น˜ํ•ด์ค˜์•ผํ–ˆ๋‹ค. (-_-)

 

https://github.com/jdx/mise

 

GitHub - jdx/mise: dev tools, env vars, task runner

dev tools, env vars, task runner. Contribute to jdx/mise development by creating an account on GitHub.

github.com

์œ„ ๋งํฌ๋Š” mise Github์ด๋ฉฐ, ๋“ค์–ด๊ฐ€๋ณด๋ฉด mise ์„ค์น˜๋ฐฉ์‹์ด ์ž์„ธํžˆ ๋‚˜์™€์žˆ๋‹ค.

 

๋ƒ…๋”ฐ ํ„ฐ๋ฏธ๋„์— ๋ณต๋ถ™์„ ํ•˜๋‹ค๊ฐ€.. ์˜ค๋ฅ˜๋–ด๋‹ค.

์„ค์น˜ ์™„๋ฃŒํ•œ mise๋ฅผ ์‰˜์—๋‹ค๊ฐ€ ์ ์šฉ์‹œํ‚ค๋Š” ๊ณผ์ •์ธ๋ฐ...

์ €์ฒ˜๋Ÿผ ๋ƒ…๋”ฐ ์„ธ ์ค„ ๋‹ค ๋ณต๋ถ™ํ•˜์ง€ ๋งˆ์‹œ๊ณ ์š” ๋ณธ์ธ์˜ ์ปด์— ํ•ด๋‹นํ•˜๋Š” ์ค„ ํ•˜๋‚˜๋งŒ ๋ณต๋ถ™ํ•˜์‹ญ์‹œ์˜ค. ใ…‹ใ…‹

 

Tuist ๋ฒ„์ „ ๊ณ ์ • (์ค‘์š”!***)

์ด๊ฒƒ ๋•Œ๋ฌธ์— ๋ฉฐ์น  ์‚ฝ์งˆํ•œ ๊ฒƒ ๊ฐ™๋‹ค.

๋ถ„๋ช… ํ•˜๋ผ๋Š” ๋Œ€๋กœ ํ–ˆ๋Š”๋ฐ, tuist init๋ถ€ํ„ฐ ์ด์ƒํ•˜๊ฒŒ ๋‹ค๋ฅธ ํฌ์ŠคํŒ…๊ธ€๋“ค๊ณผ๋Š” ํด๋” ๊ตฌ์กฐ๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์ด๋‹ค!

 

์™œ์ผ๊นŒ?

๋ฒ„์ „๋ฌธ์ œ์˜€๋‹ค.

์ด ์ฆˆ์•„์‹๋“ค์ด ใ…‹

 

์–ด๋–ค ์‹์œผ๋กœ ๋‹ฌ๋ž๋ƒ๋ฉด,

๊ธฐ์กด์˜ Plugins ํด๋”๋„ ์‚ฌ๋ผ์กŒ๊ณ 

Tuist > ProjectDescriptionHelpers ํด๋”๋„ ์‚ฌ๋ผ์กŒ๊ณ 

Config.swift๋„ ์‚ฌ๋ผ์กŒ๊ณ ...

์ด๊ฒƒ์ €๊ฒƒ ๋งŽ์ด ์‚ฌ๋ผ์ ธ์žˆ์–ด์„œ ๊ณค๋ž€ํ–ˆ๋‹ค.

 

Tuist init์„ ํ•˜๊ธฐ์— ์•ž์„œ, ๋งŒ๋“ค๊ณ ์ž ํ•˜๋Š” ํ”„๋กœ์ ํŠธ ํด๋”์— ๋“ค์–ด๊ฐ€ .tuist-version ํŒŒ์ผ์„ ์ƒ์„ฑ์‹œ์ผœ์ฃผ๊ณ  ๋ฒ„์ „ ์ •๋ณด๋ฅผ ์จ๋„ฃ๋Š”๋‹ค.

touch .tuist-version

 

์•„๊นŒ ํ™•์ธํ•ด๋ณด๋‹ˆ ๋‚˜๋Š” 4.1.์–ผ๋งˆ๋กœ ๋˜์–ด์žˆ๊ธธ๋ž˜, 3.33.3๋กœ ์จ๋„ฃ์–ด์ฃผ๊ณ  ์ €์žฅ์‹œ์ผฐ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ์žฌ์„ค์น˜ ์ง„ํ–‰

mise install tuist

 

๋˜ํ•œ Tuist๋ฅผ ๋กœ์ปฌํ™˜๊ฒฝ์—์„œ ๊ธ€๋กœ๋ฒŒํ•˜๊ฒŒ ์“ฐ๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ๋ช…๋ น์–ด๋„ ์‹คํ–‰์‹œํ‚จ๋‹ค.

mise use -g tuist

 

 

์ด์ œ ๋—!

Tuist init

tuist init --platform ios // UIkit
tuist init --platform ios --template swiftui // SwiftUI

UIKit๋˜๋Š” SwiftUI๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑ์‹œ์ผœ์ฃผ๋Š” ๋ช…๋ น์–ด์ด๋‹ค.

๋ณธ์ธ์ด ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด๋ฅผ ๊ฐ€์ง€๊ณ  ์„ ํƒํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค...

์—ฌ๋‹ด์„ ํ•˜์ž๋ฉด, ์•„๊นŒ ๋ฒ„์ „ ๊ณ ์ •ํ•˜๊ธฐ ์ „์—๋Š” --platform ios ๊นŒ์ง€๋งŒ ์ž…๋ ฅํ–ˆ๋Š”๋ฐ๋„ SwiftUI๋กœ ์ƒ์„ฑ์ด ๋๋‹ค.

์ž˜๋ชป ์นœ ์ค„ ์•Œ๊ณ  ๋ช‡ ๋ฒˆ์„ ์ง€์› ๋‹ค ์ƒ์„ฑํ•ด๋ดค๋Š”๋ฐ๋„ ๋˜‘๊ฐ™์•˜๋‹ค. 

์—ฌ๋Ÿฌ๋ถ„์€ ๋ฒ„์ „์„ ๊ผญ ๊ณ ์ •์‹œํ‚ค์‹ญ์‹œ์˜ค.

 

Tuist ๋„์ž…

tuist edit

์œ„ ๋ช…๋ น์–ด๋ฅผ ์น˜๋ฉด ์—‘์Šค์ฝ”๋“œ๊ฐ€ ์—ด๋ฆฌ๋ฉฐ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ฃผ์˜ํ•  ์ . Xcode๋ฅผ ๋‹ซ์œผ๋ฉด ๋‚ด์šฉ์ด ์‚ฌ๋ผ์ง„๋‹ค๋Š” ์‚ฌ์‹ค... ์›๋ž˜ ๊ทธ๋ ‡๋‹ค๊ณ  ํ•œ๋‹ค.

--parmenent๋ฅผ ๋ง๋ถ™์ด๋ฉด ์˜๊ตฌ์ ์œผ๋กœ ๋œ๋‹ค๋Š”๋ฐ, ์ด์ƒํ•˜๊ฒŒ ์ œ ์ปด์—์„œ๋Š” ์•ˆ ๋์Šต๋‹ˆ๋‹ค.

์‹œ๊ฐ„ ๋งŽ์„ ๋•Œ ํ•˜์„ธ์š”.

 

 

์ž‘์—…์€ ์•„๋ž˜ ๋งํฌ๋ฅผ ๋˜‘๊ฐ™์ด ๋”ฐ๋ผํ–ˆ๋‹ค.

https://baegteun.tistory.com/2

์ •๋ง ๋˜‘๊ฐ™์ด ๋งŒ๋“ค์—ˆ๋‹ค.

 

 

์ฒ˜์Œ์— Manifest ์›Œํฌ์ŠคํŽ˜์ด์Šค๊ฐ€ ์—ด๋ ค์„œ ์ข€ ๋‹นํ™ฉํ–ˆ๋Š”๋ฐ, Tuist์—์„œ ์ž„์‹œ ์›Œํฌ์ŠคํŽ˜์ด์Šค๋ฅผ ์ƒ์„ฑ์‹œ์ผœ์ค€ ๊ฑฐ๋ผ๊ณ  ํ•œ๋‹ค.

์‹ ๊ธฐํ•˜๋‹ค.

์—ฌ๊ธฐ์„œ ์ž‘์—…ํ•˜๊ณ  ๋‹ค์‹œ ๋‹ซ์œผ๋ฉด ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค.

Tuist ๊ฒฐ๊ณผ

๋งˆ์ง€๋ง‰์œผ๋กœ,

์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์“ฐ๋ฉด ์˜๋„๋Œ€๋กœ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.

tuist generate

 

์ตœ๊ณ ๋‹น!!

 

์ฐธ๊ณ ๋กœ tree๋ฅผ ์„ค์น˜ํ•˜๋ฉด ํ„ฐ๋ฏธ๋„์—์„œ ์ด๋ ‡๊ฒŒ ๋ณด๊ธฐ ์‰ฝ๊ฒŒ ํŒŒ์ผ๊ตฌ์กฐ๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.

brew install tree
tree .

 

๋˜ํ•œ truist graph๋ฅผ ์‹คํ–‰์‹œํ‚ค๋ฉด ๋ชจ๋“ˆ ๊ตฌ์กฐ๋ฅผ ๊ทธ๋ฆฐ ๊ทธ๋ž˜ํ”„ ์ด๋ฏธ์ง€๋ฅผ ์ถ”์ถœํ•ด์ค€๋‹ค.

๊ณ ๋Œ€๋กœ ๊นƒํ—ˆ๋ธŒ์— ์—…๋กœ๋“œํ•˜๋ฉด ํŽธ๋ฆฌํ•  ๋“ฏ.

tuist graph

 

 

์†Œ๊ฐ

Tuist๋Š” ์ฝ”์ฝ”์•„ํŒŸ ์ง€์›์„ ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ•œ๋‹ค. ๋•Œ๋ฌธ์— SPM๋˜๋Š” ์นด๋ฅดํƒ€๊ณ ๋ฅผ ์จ์•ผํ•  ๋“ฏํ•˜๋‹ค.

์ด๋ฒˆ ๊ธฐํšŒ์— ๋ชจ๋“ˆํ™” ์•„ํ‚คํ…์ณ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์–ด์„œ ์ข‹์•˜๋‹ค.

๋‹ค์Œ์—๋Š” ์™ธ๋ถ€ ์ข…์†์„ฑ์— ๋Œ€ํ•ด ํฌ์ŠคํŒ…์„ ํ•˜๋ฉด ๋˜๊ฒ ๋‹ค.

๋˜ํ•œ ๊นƒ์— ์˜ฌ๋ ค ํŒ€์›๊ณผ ๊ณต์œ ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์•Œ์•„๋ด์•ผ๊ฒ ๋‹ค...