ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [iOS] Swift Package Manager (SPM)
    iOS 2023. 5. 11. 13:36

    Swift Package Manager๋ž€?

    Swift Package Manager๋Š” ์†Œ์Šค ์ฝ”๋“œ ๋ฐฐํฌ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ๋กœ, ์ฝ”๋“œ๋ฅผ ์‰ฝ๊ฒŒ ๊ณต์œ ํ•˜๊ณ  ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋„๊ตฌ๋Š” Swift ํŒจํ‚ค์ง€ ์ปดํŒŒ์ผ ๋ฐ ์—ฐ๊ฒฐ, ์ข…์†์„ฑ ๊ด€๋ฆฌ, ๋ฒ„์ „ ๊ด€๋ฆฌ, ์œ ์—ฐํ•œ ๋ฐฐํฌ ๋ฐ ํ˜‘์—… ๋ชจ๋ธ ์ง€์› ๋“ฑ์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

    Github์™€ ๊ฐ™์€ ์„œ๋น„์Šค์—์„œ ํŒจํ‚ค์ง€๋ฅผ ์‰ฝ๊ฒŒ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํŒจํ‚ค์ง€๋Š” ๊ฐœ์ธ ๊ฐœ๋ฐœ, ํŒ€ ๋‚ด ์ฝ”๋“œ ๊ณต์œ  ๋˜๋Š” ๊ธฐํƒ€ ์„ธ๋ถ„ํ™”๋œ ์ˆ˜์ค€์—์„œ๋„ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    About Packages

    ํŒจํ‚ค์ง€๋Š” Package.swift manifest ํŒŒ์ผ์„ ํฌํ•จํ•œ Swift ์†Œ์Šค ํŒŒ์ผ๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค. manifest file (ํ˜น์€ package manifest)์€ PackageDescription ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒจํ‚ค์ง€์˜ ์ด๋ฆ„๊ณผ ๋‚ด์šฉ์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€์—๋Š” 1๊ฐœ ์ด์ƒ์˜ ํƒ€๊ฒŸ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ํƒ€๊ฒŸ์€ product๋ฅผ ์ง€์ •ํ•˜๊ณ , ํ•˜๋‚˜ ์ด์ƒ์˜ ์ข…์†์„ฑ์„ ์„ ์–ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    About Modules

    Swift๋Š” ์ฝ”๋“œ๋ฅผ ๋ชจ๋“ˆ๋กœ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๋ชจ๋“ˆ์€ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์ง€์ •ํ•˜๊ณ  ํ•ด๋‹น ๋ชจ๋“ˆ ์™ธ๋ถ€์—์„œ ํ•ด๋‹น ์ฝ”๋“œ์˜ ์–ด๋–ค ๋ถ€๋ถ„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ์ ‘๊ทผ ์ œ์–ด๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

    ํ”„๋กœ๊ทธ๋žจ์€ ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ๋‹จ์ผ ๋ชจ๋“ˆ์— ํฌํ•จํ•  ์ˆ˜๋„ ์žˆ๊ณ , ๋‹ค๋ฅธ ๋ชจ๋“ˆ์„ dependencies๋กœ import ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. OS X์˜ Darwin์ด๋‚˜ Linux์˜ GLibc์™€ ๊ฐ™์ด ์‹œ์Šคํ…œ์—์„œ ์ œ๊ณตํ•˜๋Š” ์†Œ์ˆ˜์˜ ๋ชจ๋“ˆ์„ ์ œ์™ธํ•˜๊ณ , ๋Œ€๋ถ€๋ถ„์˜ dependencies๋Š” ์ฝ”๋“œ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ๋นŒ๋“œํ•ด์•ผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ํŠน์ • ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๋ณ„๋„์˜ ๋ชจ๋“ˆ๋กœ ์ถ”์ถœํ•˜๋ฉด ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด, ๋„คํŠธ์›Œํฌ ์š”์ฒญ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋“ˆ์„ ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋žจ ๊ฐ„์— ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๋” ๋‚˜์€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋“ˆ์ด ๋“ฑ์žฅํ•˜๋ฉด, ์ตœ์†Œํ•œ์˜ ๋ณ€๊ฒฝ๋งŒ์œผ๋กœ ์‰ฝ๊ฒŒ ๊ณ ์ฒดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“ˆํ™”๋ฅผ ์ˆ˜์šฉํ•˜๋ฉด, ๋„์ค‘์— ๋งˆ์ฃผ์น˜๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ์— ์–ฝ๋งค์ด์ง€ ์•Š๊ณ  ๋‹น๋ฉดํ•œ ๋ฌธ์ œ์˜ ํฅ๋ฏธ๋กœ์šด ์ธก๋ฉด์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    Building Swift Modules

    Swift Package Manager์™€ ๋นŒ๋“œ ์‹œ์Šคํ…œ์€ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ์†Œ์Šค ์ฝ”๋“œ์˜ organization์„ ์‚ฌ์šฉํ•˜์—ฌ ์˜๋ฏธ๋ฅผ ํŒŒ์•…ํ•˜๋Š” ๊ทœ์น™ ๊ธฐ๋ฐ˜ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ, ์ด๋Ÿฌํ•œ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์™„์ „ํžˆ ์žฌ์ •์˜ํ•˜๊ณ  ์ปค์Šคํ„ฐ๋งˆ์ด์ง•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    foo/Package.swift
    foo/Sources/main.swift

    ์—ฌ๊ธฐ์„œ Package.swift๋Š” ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ metadata๋ฅผ ํฌํ•จํ•˜๋Š” ๋งค๋‹ˆํŽ˜์ŠคํŠธ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.

    foo ๋””๋ ‰ํ† ๋ฆฌ์—์„œ swift build ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด, Swift๋Š” foo๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ํŒŒ์ผ์„ ๋นŒ๋“œํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

    ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์—๊ฒŒ๋Š” ๋ชจ๋“  ๊ฒƒ์ด ํŒจํ‚ค์ง€์ด๋ฏ€๋กœ, Package.swift์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๋ ‡๋‹ค๊ณ  ํ•ด์„œ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋” ๋„“์€ ์„ธ์ƒ์— ๊ณต๊ฐœํ•ด์•ผ ํ•œ๋‹ค๋Š” ์˜๋ฏธ๋Š” ์•„๋‹ˆ๋ฉฐ, ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๋ณด๊ฑฐ๋‚˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ณณ์— ๊ฒŒ์‹œํ•˜์ง€ ์•Š๊ณ ๋„ ์•ฑ์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด, ๋” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ๊ฒฐ์ •ํ•œ๋‹ค๋ฉด, ์†Œ์Šค๋Š” ์ด๋ฏธ ๊ฒŒ์‹œํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ๋กœ ์ค€๋น„๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €๋Š” ํŠน์ • ๋ฐฐํฌ ํ˜•ํƒœ์— ๊ตฌ์• ๋ฐ›์ง€ ์•Š์œผ๋ฏ€๋กœ, ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ, ์›Œํฌ ๊ทธ๋ฃน, ํŒ€ ๋˜๋Š” ํšŒ์‚ฌ ๋‚ด์—์„œ ๋˜๋Š” ์ „ ์„ธ๊ณ„์˜ ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ๋ฌผ๋ก  ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €๋Š” ์ž์ฒด ๋นŒ๋“œ์— ์‚ฌ์šฉ๋˜๋ฏ€๋กœ ์ž์ฒด ์†Œ์Šค ํŒŒ์ผ๋„ ์ด๋Ÿฌํ•œ ๊ทœ์น™์— ๋”ฐ๋ผ ๋ฐฐ์น˜๋ฉ๋‹ˆ๋‹ค.

    About Products

    ํƒ€๊ฒŸ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋˜๋Š” ์‹คํ–‰ ํŒŒ์ผ์„ product๋กœ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋‹ค๋ฅธ Swift ์ฝ”๋“œ์—์„œ importํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“ˆ์ด ํฌํ•จ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค. ์‹คํ–‰ ํŒŒ์ผ์€ ์šด์˜์ฒด์ œ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค.

    About Dependencies

    ๋ชจ๋˜ ๊ฐœ๋ฐœ์€ (์ข‹์€ ์˜๋ฏธ๋˜ ๋‚˜์œ ์˜๋ฏธ๋˜) ์™ธ๋ถ€ ์ข…์†์„ฑ์„ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ๊ฐ€์†ํ™”๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์งง์€ ์‹œ๊ฐ„์— ๋” ๋งŽ์€ ์ž‘์—…์„ ์™„๋ฃŒํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ, ํ”„๋กœ์ ํŠธ์— ์ข…์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐ๋Š” ๊ด€๋ จ ์กฐ์ • ๋น„์šฉ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

    ๋””ํŽœ๋˜์‹œ์— ๋Œ€ํ•œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ๋นŒ๋“œํ•˜๋Š” ๊ฒƒ ์™ธ์—๋„ ์ „์ฒด ๋””ํŽœ๋˜์‹œ ๊ทธ๋ž˜ํ”„๊ฐ€ ๋งŒ์กฑ๋  ๋•Œ๊นŒ์ง€ ํ•ด๋‹น ๋””ํŽœ๋˜์‹œ ์ž์ฒด์˜ ๋””ํŽœ๋˜์‹œ๋„ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ๋นŒ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ ๋”์šฑ ๋ณต์žกํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋””ํŽœ๋˜์‹œ๊ฐ€ ๋ฒ„์ „ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ๋™์ผํ•œ ๋””ํŽœ๋˜์‹œ๋ฅผ ๊ฐ–๋Š” ๋ชจ๋“ˆ์˜ ๋ฒ„์ „ ์š”๊ตฌ์‚ฌํ•ญ๊ณผ ์ผ์น˜ํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €์˜ ์—ญํ• ์€ ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  ๋””ํŽœ๋˜์‹œ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ๊ตฌ์ถ•ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž๋™ํ™”ํ•˜๊ณ  ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ๊ณผ ๊ด€๋ จ๋œ ์กฐ์ • ๋น„์šฉ์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

    Depedencies๋Š” Package.swift ๋งค๋‹ˆํŽ˜์ŠคํŠธ ํŒŒ์ผ์— ์ง€์ •๋ฉ๋‹ˆ๋‹ค.

    Dependency Hell

    “Dependency Hell”์€ ํ”„๋กœ์ ํŠธ์— ํ•„์š”ํ•œ ๋””ํŽœ๋˜์‹œ ๊ทธ๋ž˜ํ”„๋ฅผ ์ถฉ์กฑํ•  ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์„ ๊ตฌ์–ด์ฒด๋กœ ํ‘œํ˜„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ด๋Š” ๋ณดํ†ต ์–ด๋ ค์šด ์ž‘์—…์ž…๋‹ˆ๋‹ค.

    1. ์ถฉ๋Œ์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ์š”์ฒญํ•˜์ง€ ์•Š์€ ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ๋””ํŽœ๋˜์‹œ (๋˜๋Š” ๋””ํŽœ๋˜์‹œ ๋‚ด์—์„œ)์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    2. ๊ฐœ๋ฐœ ํŠน์„ฑ ์ƒ, 2๊ฐœ์˜ ๋””ํŽœ๋˜์‹œ ๊ทธ๋ž˜ํ”„๊ฐ€ ๋™์ผํ•œ ๊ฒฝ์šฐ๋Š” ๋“œ๋ญ…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž (์ข…์ข… ํŒจํ‚ค์ง€ ์ž‘์„ฑ์ž)๊ฐ€ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ๋„์›€์€ ํ•œ์ •์ ์ด๊ธฐ ๋•Œ๋ฌธ์—, ์ธํ„ฐ๋„ท ๊ฒ€์ƒ‰์ด ๋ฌด์˜๋ฏธํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.

    ์ข‹์€ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ dependency hell์˜ ์œ„ํ—˜์„ ์ตœ์†Œํ™”ํ•˜๋„๋ก ์„ค๊ณ„๋˜์–ด์•ผ ํ•˜๋ฉฐ, ์ด๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•  ๊ฒฝ์šฐ ์ด๋ฅผ ์™„ํ™”ํ•˜๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ์ตœ์†Œํ•œ์˜ ๋ฌธ์ œ๋งŒ์œผ๋กœ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ € ์ปค๋ฎค๋‹ˆํ‹ฐ ์ œ์•ˆ์„œ์—๋Š” ์ด๋Ÿฌํ•œ ์ง€์˜ฅ์„ ์—ผ๋‘์— ๋‘๊ณ  ์–ด๋–ป๊ฒŒ ๋ฐ˜๋ณต ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•œ ๊ฒƒ์ด ๋‹ด๊ฒจ์žˆ์Šต๋‹ˆ๋‹ค.

    ๋‹ค์Œ์€ ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ “dependency hell” ์‹œ๋‚˜๋ฆฌ์˜ค๋“ค์ž…๋‹ˆ๋‹ค.

    • ๋ถ€์ ์ ˆํ•œ ๋ฒ„์ „ ์ง€์ •
      • ํŒจํ‚ค์ง€๊ฐ€ ๋ฐฐํฌ์— ๋ถ€์ ์ ˆํ•œ ๋ฒ„์ „์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” major ๋ฒ„์ „ ์š”๊ตฌ์‚ฌํ•ญ
      • ํŒจํ‚ค์ง€์˜ ๋™์ผํ•œ ํŒจํ‚ค์ง€์— ๋Œ€ํ•ด ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ๋ฒ„์ „ ์š”๊ตฌ์‚ฌํ•ญ์„ ๊ฐ€์ง„ ๋””ํŽœ๋˜์‹œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • ex) Foo๊ฐ€ Baz ๋ฒ„์ „์— ์˜์กดํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•  ๋•Œ, Foo๋Š” ~> 1.0 ๋ฒ„์ „์˜ Baz์—, Baz๋Š” ~> 2.0 Baz ๋ฒ„์ „์— ์˜์กดํ•  ๊ฒฝ์šฐ, ๋‘ ์š”๊ตฌ ์‚ฌํ•ญ์„ ๋ชจ๋‘ ๋งŒ์กฑ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” Baz ๋ฒ„์ „์€ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์ƒํ™ฉ์€ ์—ฌ๋Ÿฌ ํŒจํ‚ค์ง€๊ฐ€ ๊ณต์œ ํ•˜๋Š” ๋””ํŽœ๋˜์‹œ๊ฐ€ ์ƒˆ๋กœ์šด major ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜๊ณ , ๋ชจ๋“  ํŒจํ‚ค์ง€๊ฐ€ ๋””ํŽœ๋˜์‹œ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐ ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ๊ฒฝ์šฐ์— ์ž์ฃผ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
    • ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” minor ๋˜๋Š” update ๋ฒ„์ „ ์š”๊ตฌ์‚ฌํ•ญ
      • ํŒจํ‚ค์ง€์— ์—„๊ฒฉํ•˜๊ฒŒ ์ง€์ •๋œ ๋””ํŽœ๋˜์‹œ๊ฐ€ ์žˆ์–ด์„œ ๋ฒ„์ „ ์š”๊ตฌ์‚ฌํ•ญ์ด ๋‹ค๋ฅธ minor ๋˜๋Š” update ๋ฒ„์ „๊ณผ ํ˜ธํ™˜๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • ex) Foo๊ฐ€ Baz ๋ฒ„์ „ 2.0.1์— ์˜์กดํ•˜๊ณ , Bar๋Š” Baz ๋ฒ„์ „ 2.0.2์— ์˜์กดํ•˜๋Š” ๊ฒฝ์šฐ, ๋‘ ์š”๊ตฌ์‚ฌํ•ญ์„ ๋ชจ๋‘ ์ถฉ์กฑํ•  ์ˆ˜ ์žˆ๋Š” Baz ๋ฒ„์ „์€ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋””ํŽœ๋˜์‹œ์˜ patch release์—์„œ ํšŒ๊ท€๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ํŒจํ‚ค์ง€๊ฐ€ ํ•ด๋‹น ๋””ํŽœ๋˜์‹œ๋ฅผ ํŠน์ • ๋ฒ„์ „์— ์ž ๊ทธ๋Š” ๊ฒฐ๊ณผ๋กœ ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.
    • ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ถฉ๋Œ
      • ํŒจํ‚ค์ง€์— ์ด๋ฆ„์ด ๊ฐ™์€ ๋””ํŽœ๋˜์‹œ๊ฐ€ 2๊ฐœ ์ด์ƒ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Person ํŒจํ‚ค์ง€๋Š” ์‚ฌ๋žŒ์—๊ฒŒ ์šฐํŽธ ์ฃผ์†Œ๋ฅผ ํ• ๋‹นํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์„ ์ •์˜ํ•˜๋Š” Addressable ํŒจํ‚ค์ง€์™€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ ๊ณต์‹์ ์œผ๋กœ ๋งํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ์„ ์ •์˜ํ•˜๋Š” Addressable ํŒจํ‚ค์ง€์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค.
    • ์†์ƒ๋œ ์†Œํ”„ํŠธ์›จ์–ด
      • ํŒจํ‚ค์ง€์— ์‚ฌ์šฉ์„ฑ, ๋ณด์•ˆ ๋˜๋Š” ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๋ฒ„๊ทธ๊ฐ€ ์žˆ๋Š” ๋””ํŽœ๋˜์‹œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋‹จ์ˆœํžˆ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €์˜ ์ ์‹œ์„ฑ ๋ฌธ์ œ์ผ ์ˆ˜๋„ ์žˆ๊ณ , ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ๊ธฐ๋Œ€์น˜์— ๋Œ€ํ•œ ๋น„๋™์˜์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์ „์—ญ ์ƒํƒœ ์ถฉ๋Œ
      • ํŒจํ‚ค์ง€์— ๋™์ผํ•œ ์ „์—ญ ์ƒํƒœ์— ๋Œ€ํ•œ ๋…์  ์ ‘๊ทผ ๊ถŒํ•œ์„ ๊ฐ€์ง„ ๊ฒƒ์œผ๋กœ ์ถ”์ •๋˜๋Š” ๋””ํŽœ๋˜์‹œ๊ฐ€ 2๊ฐœ ์ด์ƒ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • ex) ํ•œ ํŒจํ‚ค์ง€๊ฐ€ ํŠน์ • ํŒŒ์ผ ๊ฒฝ๋กœ์—์„œ ์ฝ๋Š” ๋™์•ˆ, ํŠน์ • ํŒŒ์ผ ๊ฒฝ๋กœ์— ์“ฐ๋Š” ๋‹ค๋ฅธ ํŒจํ‚ค์ง€๋ฅผ ์ˆ˜์šฉํ•˜์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋จ
      • ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋œ ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ๋””ํŽœ๋˜์‹œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์†Œ์Šค URL์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๊ฑฐ๋‚˜ ๊ด€๋ฆฌ์ž๊ฐ€ ๊ฒŒ์‹œ๋œ ๋ฒ„์ „์„ ์‚ญ์ œํ•˜์—ฌ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    Reference

    https://github.com/apple/swift-package-manager/blob/main/Documentation/README.md

    ๋Œ“๊ธ€

Designed by Tistory.