โ† ๋ชฉ๋ก์œผ๋กœ
PNPM vs Yarn Berry

Yarn Berry์™€ pnpm ๋ชจ๋‘ ๋น ๋ฅธ ์†๋„์™€ ํšจ์œจ์ ์ธ ๋””์Šคํฌ ์‚ฌ์šฉ์„ ๋ชฉํ‘œ๋กœ ํ•˜์ง€๋งŒ ๋‚ด๋ถ€ ๋™์ž‘ ๋ฐฉ์‹์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

์˜์กด์„ฑ ๊ด€๋ฆฌ ๋ฐฉ์‹

Yarn Berry๋Š” .yarn/cache์— ZIP ํŒŒ์ผ๋กœ ํŒจํ‚ค์ง€๋ฅผ ์ €์žฅํ•˜๊ณ , pnpm์€ node_modules/.pnpm์— ์ €์žฅํ•˜๋ฉด์„œ ์ „์—ญ ์ €์žฅ์†Œ์˜ ํŒจํ‚ค์ง€๋ฅผ ํ•˜๋“œ๋งํฌ๋กœ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

Node Linker ์„ค์ • ๋ฐฉ๋ฒ•

Yarn Berry์˜ ์˜ต์…˜

  • node-modules: ๊ธฐ์กด npm ๋ฐฉ์‹๊ณผ ์œ ์‚ฌํ•œ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ
  • pnp: .pnp.cjs ํŒŒ์ผ์„ ์ด์šฉํ•ด ์˜์กด์„ฑ์„ ์ง์ ‘ ๊ด€๋ฆฌ

pnpm์˜ ์˜ต์…˜

  • isolated: ๊ธฐ๋ณธ ์„ค์ •, ํ•˜๋“œ๋งํฌ์™€ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋””์Šคํฌ ๊ณต๊ฐ„ ์ ˆ์•ฝ
  • hoisted: npm ๋ฐฉ์‹์ฒ˜๋Ÿผ ํ‰ํƒ„ํ™”๋œ ๊ตฌ์กฐ๋กœ ๊ตฌ์„ฑ
  • pnp: .pnp.cjs ํŒŒ์ผ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์˜์กด์„ฑ์„ ๊ด€๋ฆฌํ•˜์—ฌ node_modules ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์—†์•จ ์ˆ˜ ์žˆ์Œ

Plug'n'Play (PnP)๋ž€?

PnP๋Š” ๊ธฐ์กด์˜ node_modules ํด๋” ์—†์ด๋„ ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“  ์ƒˆ๋กœ์šด ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

PnP์˜ ์›๋ฆฌ

  1. ํŒจํ‚ค์ง€ ์„ค์น˜ ์‹œ ์˜์กด์„ฑ ํŠธ๋ฆฌ๋ฅผ ๋ถ„์„ํ•˜๊ณ  .pnp.cjs ํŒŒ์ผ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  2. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰ ์‹œ (์˜ˆ: npm run dev๋กœ ๊ฐœ๋ฐœ ์„œ๋ฒ„ ์‹คํ–‰ ๋˜๋Š” npm run build๋กœ ๋นŒ๋“œ ์ˆ˜ํ–‰), .pnp.cjs๊ฐ€ Node.js์˜ require() ๋˜๋Š” import ์š”์ฒญ์„ ๊ฐ€๋กœ์ฑ„์–ด, ์ •ํ™•ํ•œ ํŒจํ‚ค์ง€ ์œ„์น˜๋ฅผ ์ฆ‰์‹œ ์ฐพ์•„์ค๋‹ˆ๋‹ค.

PnP์˜ ์žฅ์ 

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

PnP์˜ ๋‹จ์ 

  • ์ผ๋ถ€ ๋ ˆ๊ฑฐ์‹œ ํŒจํ‚ค์ง€์™€ ํ˜ธํ™˜๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (node_modules ๋””๋ ‰ํ† ๋ฆฌ์— ์˜์กดํ•˜๋Š” ํŒจํ‚ค์ง€)

Yarn Berry๋งŒ์˜ ๊ฐ•์ 

1. Zero Install

Yarn Berry๋Š” ํŒจํ‚ค์ง€ ์บ์‹œ๋ฅผ git์— ํฌํ•จํ•  ์ˆ˜ ์žˆ์–ด, ๋ณ„๋„์˜ yarn install ๊ณผ์ • ์—†์ด ๋ฐ”๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2. ํ”Œ๋Ÿฌ๊ทธ์ธ ์‹œ์Šคํ…œ

Yarn Berry๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ ์‹œ์Šคํ…œ์„ ์ง€์›ํ•˜์—ฌ, ์ปค์Šคํ…€ ๋ช…๋ น์–ด๋‚˜ ์ž๋™ํ™”๋œ ์ž‘์—…์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๋ฐฐํฌ, ์ฝ”๋“œ ํฌ๋งทํŒ… ๋“ฑ์˜ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Yarn Berry์™€ pnpm์€ ๋ชจ๋‘ ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์ธ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ ๋ฐฉ์‹์„ ์ œ๊ณตํ•˜์ง€๋งŒ, ํ•˜๋“œ๋งํฌ์™€ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ ๊ฐ™์€ ๊ณ ์œ  ๋™์ž‘๋ฐฉ์‹์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ๊ณ ๋ คํ•ด์„œ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.