Loadingโ€ฆ

์ด Yarn ํฌ๋งทํ„ฐ ์ •๋ณด ์˜จ๋ผ์ธ Yarn.lock ํฌ๋งทํ„ฐ

yarn.lock ํŒŒ์ผ์„ ํŽธ์ง‘๊ธฐ์— ๋ถ™์—ฌ๋„ฃ๊ฑฐ๋‚˜ ํŒŒ์ผ์„ ๋“œ๋กญํ•œ ํ›„ **ํฌ๋งท**์„ ํด๋ฆญํ•˜์„ธ์š”. ์ด ๋„๊ตฌ๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ Yarn์˜ ๊ณต์‹ lockfile ํŒŒ์„œ(v1โ€“v4)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์•ˆ์ „ํ•œ ๋ฐฑ์—”๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋ฒ„์ „, ๋ฌด๊ฒฐ์„ฑ ํ•ด์‹œ ๋ฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์กดํ•˜๋ฉด์„œ ๋“ค์—ฌ์“ฐ๊ธฐ์™€ ์ˆœ์„œ๋ฅผ ์ •๋ฆฌํ•˜์—ฌ ํ‘œ์ค€์ ์ด๊ณ  ์•ˆ์ •๋œ ํ˜•์‹์œผ๋กœ lockfile์„ ์žฌ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

์ด Yarn.lock ํฌ๋งทํ„ฐ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ

  • Yarn ์ธ์‹ ํŒŒ์„œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Yarn v1โ€“v4(ํด๋ž˜์‹ ๋ฐ Berry/๋ชจ๋˜)์˜ yarn.lock ํŒŒ์ผ์„ ์•ˆ์ „ํ•˜๊ฒŒ ์žฌ์ถœ๋ ฅ
  • ๋“ค์—ฌ์“ฐ๊ธฐ, ๊ฐ„๊ฒฉ, ๋ธ”๋ก ์ˆœ์„œ๋ฅผ ์ •๊ทœํ™”ํ•˜์—ฌ Git diff ๋…ธ์ด์ฆˆ๋ฅผ ์ค„์ž…๋‹ˆ๋‹ค
  • ๋ฒ„์ „, ํ•ด๊ฒฐ๋œ URL, ๋ฌด๊ฒฐ์„ฑ ํ•ด์‹œ, ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋Œ€๋กœ ์ •ํ™•ํžˆ ๋ณด์กดํ•ฉ๋‹ˆ๋‹ค
  • yarn.lock ๋‚ด์šฉ์—์„œ ์ง์ ‘ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค(ํฌ๋งท ์ •๋ฆฌ๋ฅผ ์œ„ํ•ด yarn install์„ ์‹คํ–‰ํ•  ํ•„์š” ์—†์Œ)
  • .lock ํŒŒ์ผ์— ๋Œ€ํ•œ ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ ์ง€์› ๋ฐ ๊ตฌ๋ฌธ ๊ฐ•์กฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ
  • lockfile ๊ตฌ์กฐ๋ฅผ ๊ฒ€์ฆํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์šฉํžˆ ์†์ƒ์‹œํ‚ค์ง€ ์•Š๊ณ  ๊ตฌ๋ฌธ ๋ถ„์„ ์˜ค๋ฅ˜๋ฅผ ํ‘œ๋ฉดํ™”ํ•ฉ๋‹ˆ๋‹ค
  • ์•ˆ์ „์„ ์œ„ํ•œ ์—„๊ฒฉํ•œ ํฌ๊ธฐ ์ œํ•œ๊ณผ ํƒ€์ž„์•„์›ƒ์ด ์žˆ๋Š” ์•ˆ์ „ํ•œ ์„œ๋ฒ„ ์ธก ํฌ๋งทํ„ฐ ์—”๋“œํฌ์ธํŠธ ์‚ฌ์šฉ

๐Ÿ› ๏ธ ์˜จ๋ผ์ธ์—์„œ Yarn.lock ํŒŒ์ผ ์ •๊ทœํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ• for yarn-formatter

1

1. yarn.lock ๋ถ™์—ฌ๋„ฃ๊ธฐ ๋˜๋Š” ์—…๋กœ๋“œ

ํ”„๋กœ์ ํŠธ์˜ **yarn.lock** ํŒŒ์ผ์„ ์—ด๊ณ , ๋‚ด์šฉ์„ ํŽธ์ง‘๊ธฐ์— ๋ณต์‚ฌํ•˜๊ฑฐ๋‚˜ ํŒŒ์ผ์„ ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญํ•˜์„ธ์š”. ์ด ๋„๊ตฌ๋Š” v1๋ถ€ํ„ฐ v4๊นŒ์ง€์˜ Yarn lockfile์„ ์ธ์‹ํ•ฉ๋‹ˆ๋‹ค.

2

2. ํฌ๋งทํ„ฐ ์‹คํ–‰

**Format** ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์„ธ์š”. ๋ฐฑ์—”๋“œ๊ฐ€ Yarn ์ธ์‹ ๋กœ์ง์œผ๋กœ lockfile์„ ํŒŒ์‹ฑํ•˜๊ณ  ํ‘œ์ค€ํ™”๋œ ์ •๊ทœ ํ˜•์‹์œผ๋กœ ์žฌ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

3

3. ์ถœ๋ ฅ ๊ฒฐ๊ณผ ๊ฒ€ํ† 

ํฌ๋งท๋œ yarn.lock์„ ๊ฒ€์‚ฌํ•˜์„ธ์š”. ๋ฒ„์ „, ํ•ด๊ฒฐ๋œ URL, ๋ฌด๊ฒฐ์„ฑ ํ•ด์‹œ, ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” ๋™์ผํ•ด์•ผ ํ•˜๋ฉฐ ๊ณต๋ฐฑ๊ณผ ์ˆœ์„œ๋งŒ ์ •๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

4

4. ๋ณต์‚ฌ ๋˜๋Š” ๋‹ค์šด๋กœ๋“œ ํ›„ ์ปค๋ฐ‹

์ •๊ทœํ™”๋œ lockfile์„ ํ”„๋กœ์ ํŠธ์— ๋‹ค์‹œ ๋ณต์‚ฌํ•˜๊ฑฐ๋‚˜ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์›๋ณธ์„ ๊ต์ฒดํ•˜์„ธ์š”. ํ–ฅํ›„ diff๋ฅผ ์•ˆ์ •ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์—…๋ฐ์ดํŠธ๋ฅผ ์ปค๋ฐ‹ํ•˜์„ธ์š”.

๊ธฐ์ˆ ์  ์„ธ๋ถ€์‚ฌํ•ญ

Yarn.lock ๋ฐ ๋ฒ„์ „ ์ง€์›

์ด ๋„๊ตฌ๋Š” Yarn lockfile์—๋งŒ ์ง‘์ค‘ํ•˜๋ฉฐ ํด๋ž˜์‹ ๋ฐ ๋ชจ๋˜ lockfile ํ˜•์‹์„ ๋ชจ๋‘ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค.

Lockfile ์œ ํ˜•์ง€์›์ฐธ๊ณ ์‚ฌํ•ญ
Yarn v1 (ํด๋ž˜์‹)โœ… ์ „์ฒดํ—ค๋” ์ฃผ์„์ด ์žˆ๋Š” ์›๋ž˜ ํ‚ค/๊ฐ’ lockfile ํ˜•์‹์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
Yarn v2โ€“v4 (Berry/๋ชจ๋˜)โœ… ์ „์ฒด์ƒˆ๋กœ์šด YAML ์Šคํƒ€์ผ lockfile ๋ ˆ์ด์•„์›ƒ๊ณผ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋ธ”๋ก์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค.
๋น„-Yarn .lock ํŒŒ์ผโš ๏ธ ๋ณด์žฅ๋˜์ง€ ์•Š์Œ๋‹ค๋ฅธ lock ํ˜•์‹(npm, pnpm ๋“ฑ)์€ ์ด ํฌ๋งทํ„ฐ์—์„œ ๊ณต์‹์ ์œผ๋กœ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
package.jsonโŒ ๋ฒ”์œ„ ์™ธ๋Œ€์‹  JSON ํฌ๋งทํ„ฐ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ package.json์„ ํฌ๋งทํ•˜์„ธ์š”.

ํฌ๋งทํŒ… ๋™์ž‘

์ด ํฌ๋งทํ„ฐ๋Š” **์•ˆ์ „ํ•˜๊ณ  ๋ฉฑ๋“ฑ์„ฑ**์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค: ์—ฌ๋Ÿฌ ๋ฒˆ ์‹คํ–‰ํ•ด๋„ ๋ฝํŒŒ์ผ์„ ์•ˆ์ •์ ์œผ๋กœ ์œ ์ง€ํ•˜๋ฉด์„œ ์˜์กด์„ฑ ์˜๋ฏธ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

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

์ œํ•œ, ์„ฑ๋Šฅ ๋ฐ ์•ˆ์ „์„ฑ

์‹ค์ œ ๋ฝํŒŒ์ผ๊ณผ ํ•จ๊ป˜ ๋น ๋ฅธ ์ƒํ˜ธ์ž‘์šฉ ์‚ฌ์šฉ์„ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์œผ๋ฉฐ ์„œ๋ฒ„์™€ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋ณดํ˜ธํ•ฉ๋‹ˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ’์ฐธ๊ณ 
์ตœ๋Œ€ ํ…์ŠคํŠธ ํฌ๊ธฐโ‰ˆ 2,000,000 ๋ฌธ์žํฌ๋งทํ„ฐ ์—”๋“œํฌ์ธํŠธ ํ˜ธ์ถœ ์ „ ์ ์šฉ๋˜๋Š” ํ•˜๋“œ ์•ˆ์ „ ์ œํ•œ.
์ตœ๋Œ€ ํŒŒ์ผ ํฌ๊ธฐ~5 MB๊ทน๋‹จ์ ์ธ ๊ฒฝ์šฐ๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•œ ์—…๋กœ๋“œ UI ์ˆ˜์ค€ ์ œ์•ฝ.
ํƒ€์ž„์•„์›ƒ~25์ดˆ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์š”์ฒญ์€ ๋ช…ํ™•ํ•œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€์™€ ํ•จ๊ป˜ ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค.
์ฒ˜๋ฆฌ ์œ„์น˜์„œ๋ฒ„ ์ธกํฌ๋งทํŒ…์€ Yarn ์ธ์‹ ๋กœ์ง์„ ์‚ฌ์šฉํ•˜๋Š” ์•ˆ์ „ํ•œ ๋ฐฑ์—”๋“œ์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
์ง€์†์„ฑ์žฅ๊ธฐ ์ €์žฅ ์—†์ŒLockfile ๋‚ด์šฉ์€ ํ˜•์‹ํ™”๋œ ๊ฒฐ๊ณผ๋ฅผ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด ์ผ์‹œ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

Yarn.lock ์ •๋ฆฌ๋ฅผ ์œ„ํ•œ CLI ๋Œ€์•ˆ

๋Œ€๊ทœ๋ชจ ์ €์žฅ์†Œ๋‚˜ ์ž๋™ํ™”๋œ ์›Œํฌํ”Œ๋กœ์šฐ์˜ ๊ฒฝ์šฐ, lockfile ์ •๊ทœํ™”๋ฅผ ๊ธฐ์กด Yarn/Node.js ๋„๊ตฌ ์ฒด์ธ ๋‚ด์—์„œ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์Šต๋‹ˆ๋‹ค.

๋ฆฌ๋ˆ…์Šค / ๐Ÿ macOS / ๐ŸชŸ Windows (Node.js)

yarn.lock์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ์ƒ์„ฑ

rm yarn.lock && yarn install

Yarn์ด package.json๊ณผ ํ˜„์žฌ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์ƒํƒœ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ lockfile์„ ์žฌ์ƒ์„ฑํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

Prettier๋กœ lockfile๊ณผ JSON ๋งค๋‹ˆํŽ˜์ŠคํŠธ ํ˜•์‹ํ™”

npx prettier "**/yarn.lock" "**/package.json" --write

Prettier๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ lockfile๊ณผ ํŒจํ‚ค์ง€ ๋งค๋‹ˆํŽ˜์ŠคํŠธ์˜ ๊ณต๋ฐฑ์„ ์ •๊ทœํ™”ํ•ฉ๋‹ˆ๋‹ค.

๋” ์ž‘์€ diff๋ฅผ ์œ„ํ•ด package.json ํ•„๋“œ ์ •๋ ฌ

npx sort-package-json

dependencies ๋ฐ scripts์™€ ๊ฐ™์€ package.json ์„น์…˜์„ ์ผ๊ด€๋˜๊ฒŒ ์ •๋ ฌ๋œ ์ƒํƒœ๋กœ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

๋น ๋ฅธ ์ˆ˜๋™ ์ •๋ฆฌ๋‚˜ ๊ฒ€ํ† ๋ฅผ ์œ„ํ•ด ์ด ์˜จ๋ผ์ธ ํฌ๋งทํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ์™„์ „ํ•œ ์ž๋™ํ™” ์ •๊ทœํ™”๋ฅผ ์œ„ํ•ด Yarn/Prettier๋ฅผ CI ํŒŒ์ดํ”„๋ผ์ธ์— ์—ฐ๊ฒฐํ•˜์„ธ์š”.

์‹ค์šฉ์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€

์ง€์ €๋ถ„ํ•œ Git Diff ์ •๋ฆฌ

ํ’€ ๋ฆฌํ€˜์ŠคํŠธ์—์„œ lockfile ๊ด€๋ จ ๋…ธ์ด์ฆˆ๋ฅผ ์ค„์ž…๋‹ˆ๋‹ค.

  • ๊ฐ„๊ฒฉ๊ณผ ์ˆœ์„œ๊ฐ€ ์ผ๊ด€๋˜์ง€ ์•Š๊ฒŒ ๋œ ๋ณต์žกํ•œ ๋ณ‘ํ•ฉ ํ›„ yarn.lock์„ ์ •๊ทœํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • PR์„ ์—ด๊ธฐ ์ „์— ํฌ๋งทํ„ฐ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์˜์กด์„ฑ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋” ์‰ฝ๊ฒŒ ๊ฒ€ํ† ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  • lockfile ํ˜•์‹ํ™”๋ฅผ ์•ˆ์ •ํ™”ํ•˜์—ฌ ํ–ฅํ›„ diff๊ฐ€ ์‹ค์ œ ๋ฒ„์ „ ๋ณ€๊ฒฝ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋…ธ๋ ˆํฌ & ๋‹ค์ค‘ ๋ธŒ๋žœ์น˜ ํ”„๋กœ์ ํŠธ

ํŒ€๊ณผ ๋ธŒ๋žœ์น˜ ๊ฐ„์— lockfile์„ ๊ฐ€๋…์„ฑ ์žˆ๊ณ  ์•ˆ์ •์ ์œผ๋กœ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

  • ๋ธŒ๋žœ์น˜ ๋ฆฌ๋ฒ ์ด์Šค๋‚˜ ์žฅ๊ธฐ ์‹คํ–‰ ๊ธฐ๋Šฅ ๋ธŒ๋žœ์น˜ ํ›„ lockfile ํ˜•์‹ํ™”๋ฅผ ๋งž์ถฅ๋‹ˆ๋‹ค.
  • ๋” ํ˜„๋Œ€์ ์ธ ์›Œํฌํ”Œ๋กœ์šฐ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ๋•Œ ์˜ค๋ž˜๋œ Yarn v1 ์ƒ์„ฑ lockfile์„ ์ •๊ทœํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • lockfile ์ถฉ๋Œ์ด ๊ณ„์† ์žฌ๋ฐœํ•  ๋•Œ ๋„๊ตฌ๋ฅผ ์ง„๋‹จ ๋ณด์กฐ ์ˆ˜๋‹จ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ต์œก & ์˜จ๋ณด๋”ฉ

์ƒˆ๋กœ ์˜จ ์‚ฌ๋žŒ๋“ค์ด ์ง€์ €๋ถ„ํ•œ ์ถœ๋ ฅ์— ์••๋„๋˜์ง€ ์•Š๊ณ  yarn.lock์ด ๋ฌด์—‡์„ ํ•˜๋Š”์ง€ ์ดํ•ดํ•˜๋„๋ก ๋•์Šต๋‹ˆ๋‹ค.

  • Yarn์ด ์ •ํ™•ํ•œ ์˜์กด์„ฑ ํŠธ๋ฆฌ๋ฅผ ์–ด๋–ป๊ฒŒ ์ถ”์ ํ•˜๋Š”์ง€ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด before/after lockfile์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
  • ์›์‹œ์ ์ด๊ณ  ์ง€์ €๋ถ„ํ•œ lockfile ๋Œ€์‹  ๋ฌธ์„œํ™” ๋ฐ ์›Œํฌ์ƒต์—์„œ ์ •๊ทœํ™”๋œ lockfile์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • lockfile์ด ๋‹ค๋ฅธ ์†Œ์Šค ํŒŒ์ผ์ฒ˜๋Ÿผ ์ปค๋ฐ‹๋˜๊ณ  ๊ฒ€ํ† ๋˜์–ด์•ผ ํ•˜๋Š” ์ด์œ ๋ฅผ ์‹œ์—ฐํ•ฉ๋‹ˆ๋‹ค.

โ“ Frequently Asked Questions

๐Ÿงพ์ด ๋„๊ตฌ๋กœ ์–ด๋–ค ํŒŒ์ผ์„ ํ˜•์‹ํ™”ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

์ด ํฌ๋งทํ„ฐ๋Š” **Yarn lockfile**์— ์ „์šฉ์œผ๋กœ, ์ผ๋ฐ˜์ ์œผ๋กœ `yarn.lock`์ด๋ผ๋Š” ์ด๋ฆ„์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค. Yarn v1(ํด๋ž˜์‹)๊ณผ Yarn v2โ€“v4(๋ชจ๋˜/๋ฒ ๋ฆฌ)์—์„œ ์ƒ์„ฑ๋œ lockfile์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. `package.json`์˜ ๊ฒฝ์šฐ ๋Œ€์‹  JSON ํฌ๋งทํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

๐Ÿง ํฌ๋งทํ„ฐ๊ฐ€ ๋‚ด ์˜์กด์„ฑ์„ ๋ณ€๊ฒฝํ•˜๋‚˜์š”?

์•„๋‹ˆ์š”. ๋ชฉํ‘œ๋Š” **ํ˜•์‹ํ™”๋ฅผ ์ •๊ทœํ™”ํ•˜๋Š” ๊ฒƒ์ด์ง€ ์˜๋ฏธ๋ก ์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค**. ๋ฒ„์ „, ํ•ด๊ฒฐ๋œ URL, ๋ฌด๊ฒฐ์„ฑ ํ•ด์‹œ ๋ฐ ์˜์กด์„ฑ ๊ด€๊ณ„๋Š” ์ •ํ™•ํžˆ ๋™์ผํ•˜๊ฒŒ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ๊ณต๋ฐฑ, ์ˆœ์„œ ๋ฐ ๋ ˆ์ด์•„์›ƒ๋งŒ ์ •๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ”๋น„๊ณต๊ฐœ ํ”„๋กœ์ ํŠธ์—์„œ ์ด ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ด๋„ ์•ˆ์ „ํ•œ๊ฐ€์š”?

ํฌ๋งทํŒ…์€ ์—„๊ฒฉํ•œ ํฌ๊ธฐ ๋ฐ ์‹œ๊ฐ„ ์ œํ•œ์ด ์žˆ๋Š” ์•ˆ์ „ํ•œ ์„œ๋ฒ„ ์ธก ์—”๋“œํฌ์ธํŠธ์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ž ๊ธˆ ํŒŒ์ผ ๋‚ด์šฉ์€ ๊ฒฐ๊ณผ๋ฅผ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด ์ผ์‹œ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๋ฉฐ ์žฅ๊ธฐ๊ฐ„ ์ €์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€๋งŒ ๋งค์šฐ ๋ฏผ๊ฐํ•˜๊ฑฐ๋‚˜ ๊ทœ์ œ๋œ ์ฝ”๋“œ๋ฒ ์ด์Šค์˜ ๊ฒฝ์šฐ Yarn ๋ฐ ๊ด€๋ จ ๋„๊ตฌ๋ฅผ ์ž์ฒด ์ธํ”„๋ผ ๋‚ด์—์„œ ์™„์ „ํžˆ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โš™๏ธpackage.json๋„ ์—ฌ๊ธฐ์„œ ํฌ๋งทํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

์ด ํŠน์ • ๋„๊ตฌ๋Š” `yarn.lock`์— ์ค‘์ ์„ ๋‘ก๋‹ˆ๋‹ค. `package.json`์„ ํฌ๋งทํ•˜๋ ค๋ฉด ์ „์šฉ JSON ํฌ๋งทํ„ฐ๋‚˜ `"**/package.json" --write` ์˜ต์…˜์„ ์‚ฌ์šฉํ•œ Prettier๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. ์ž ๊ธˆ ํŒŒ์ผ๊ณผ ๋งค๋‹ˆํŽ˜์ŠคํŠธ ํฌ๋งทํŒ…์„ ์ผ์น˜์‹œํ‚ค๋Š” ๊ฒƒ์€ diff ๋…ธ์ด์ฆˆ๋ฅผ ์ค„์ด๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

๐Ÿšซyarn.lock ํŒŒ์ผ์ด ์†์ƒ๋˜์—ˆ๊ฑฐ๋‚˜ Yarn ํŒŒ์ผ์ด ์•„๋‹Œ ๊ฒฝ์šฐ ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”?

๊ธฐ๋ณธ Yarn ์ธ์‹ ํŒŒ์„œ๊ฐ€ ํŒŒ์ผ์„ ์œ ํšจํ•œ ์ž ๊ธˆ ํŒŒ์ผ๋กœ ์ธ์‹ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ, ๋„๊ตฌ๋Š” ์ถ”์ธกํ•˜์ง€ ์•Š๊ณ  ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๊ฒฝ์šฐ Yarn์œผ๋กœ ์ž ๊ธˆ ํŒŒ์ผ์„ ์žฌ์ƒ์„ฑํ•˜๊ณ (์˜ˆ: `yarn install` ์‹คํ–‰) ๋‹ค์‹œ ์‹œ๋„ํ•˜์„ธ์š”.

๐Ÿ”ํฌ๋งทํ„ฐ๋Š” ๋ฉฑ๋“ฑ์„ฑ(idempotent)์„ ๊ฐ€์ง€๋‚˜์š”?

๋„ค. ๋™์ผํ•œ yarn.lock ํŒŒ์ผ์— ๋Œ€ํ•ด ํฌ๋งทํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ์‹คํ–‰ํ•ด๋„ ๋™์ผํ•œ ์ถœ๋ ฅ์ด ์ƒ์„ฑ๋˜๋ฉฐ, ์ด๋Š” CI ํŒŒ์ดํ”„๋ผ์ธ๊ณผ pre-commit ํ›…์— ์ด์ƒ์ ์ž…๋‹ˆ๋‹ค.

Pro Tips

Best Practice

ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์—ด๊ธฐ ์ „์— yarn.lock์„ ์ •๊ทœํ™”ํ•˜์—ฌ ๊ฒ€ํ† ์ž๊ฐ€ ๊ณต๋ฐฑ ๋…ธ์ด์ฆˆ ๋Œ€์‹  ์‹ค์ œ ๋ฒ„์ „ ๋ณ€๊ฒฝ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜์„ธ์š”.

CI Tip

์ด ์˜จ๋ผ์ธ ํฌ๋งทํ„ฐ๋ฅผ ์ž ๊ธˆ ํŒŒ์ผ์—์„œ Yarn์ด๋‚˜ Prettier๋ฅผ ์‹คํ–‰ํ•˜๋Š” pre-commit ํ›… ๋˜๋Š” CI ๋‹จ๊ณ„์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์—ฌ ์—”๋“œํˆฌ์—”๋“œ ์ผ๊ด€์„ฑ์„ ํ™•๋ณดํ•˜์„ธ์š”.

Best Practice

์˜์กด์„ฑ ๋ฌธ์ œ๋ฅผ ๋””๋ฒ„๊น…ํ•  ๋•Œ๋Š” ์ •๋ฆฌ๋œ ์ž ๊ธˆ ํŒŒ์ผ์„ ์ด์Šˆ ๋ณด๊ณ ์„œ์— ์‚ฌ์šฉํ•˜์—ฌ ์œ ์ง€ ๊ด€๋ฆฌ์ž๊ฐ€ ์‰ฝ๊ฒŒ ์Šค์บ”ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜์„ธ์š”.

Best Practice

์ž ๊ธˆ ํŒŒ์ผ์ด ์˜์‹ฌ์Šค๋Ÿฌ์›Œ ๋ณด์ด๋Š” ๊ฒฝ์šฐ(๋ณ‘ํ•ฉ ์ถฉ๋Œ ๋งˆ์ปค, ๋ถ€๋ถ„์  ๋‚ด์šฉ), ๋” ๊นŠ์€ ๋ฌธ์ œ๋ฅผ ์ˆจ๊ธฐ์ง€ ์•Š๋„๋ก ํฌ๋งทํŒ…ํ•˜๊ธฐ ์ „์— Yarn์œผ๋กœ ์žฌ์ƒ์„ฑํ•˜์„ธ์š”.

Additional Resources

Other Tools